首页 > 解决方案 > 如何使用 .htaccess 将某些类型的 URL 更改为另一种类型?

问题描述

我有一个网站,每个用户都有自己的个人资料页面。我使用的是 php,所以我使用 GET 方法来制作 URL,例如:

example.com/users/dashboard?user=59

但我希望这个 URL 看起来像:

example.com/users/dashboard/59

我在这里看到了很多问题,我决定在我的 .htaccess 文件中使用下面的代码:

ErrorDocument 404 /404.php
AddDefaultCharset UTF-8
Header unset ETag
FileETag None

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+dashboard\.php\?user=([^\s&]+) [NC]
RewriteRule ^dashboard/%1? [R=301,L]

RewriteRule ^dashboard/([^/]+)/?$ dashboard.php?user=$1 [L,QSA]

我知道这是错误的,但不知道如何解决它,所以我感谢任何帮助

标签: php.htaccess

解决方案


感谢您的所有回答,但我找到了另一个解决方案:我将 .htaccess 代码更改为:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /4reza/users/index.php [L]

因此,我将每次访问用户文件夹的尝试重定向到 index.php 页面,并使用此代码管理任何具有“4reza/users/ANY_NUMBER”格式的 url:

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')
    $link = "https";
else
    $link = "http";
$link .= "://";
$link .= $_SERVER['HTTP_HOST'];
$link .= $_SERVER['REQUEST_URI'];
$urlStr = str_replace("http://localhost/4reza/", "", $link);
$chunks = array_filter(explode('/', $urlStr));


if (count($chunks) == 2 and $chunks[0] == "users" and isset($chunks[1])) {
    if (is_numeric($chunks[1])) {
        ...
    }
}

4reza 是我的网站本地文件夹


推荐阅读