1

我已经尝试了许多来自谷歌和堆栈溢出的查询/答案,但找不到适合我的。

我有一个文件 users.php,当我发送 users.php?user=username 时,我希望它是 users/user/username。我已经在我的 .htaccess 中删除了 php 扩展名。

最好的方法是什么?此外,有关所需的正确文件结构的帮助也会有所帮助。

编辑:这是我到目前为止所拥有的:

Options +FollowSymlinks -MultiViews
RewriteEngine on

# to make `/path/index.php` to /path/
RewriteCond %{THE_REQUEST} ^GET\s(.*/)index\.php [NC]
RewriteRule . %1 [NE,R=301,L]

RewriteCond %{THE_REQUEST} ^GET\s.+\.php [NC]
RewriteRule ^(.+)\.php$ /$1 [NE,R=301,L,NC]

RewriteCond %{REQUEST_URI} !\.php$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule . %{REQUEST_URI}.php [L]
4

3 回答 3

0

试试这个 htaccess 代码

RewriteEngine On 
RewriteRule ^users/user/(.*)/$ users.php?user=$1 [L]
于 2013-04-06T14:18:32.127 回答
0

呵呵..我们都有相同的答案!尝试删除.htaccess文件中的所有代码,然后单独检查它本身:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^users/user/([a-z0-9-_]+) /users.php?user=$1 [NC]

在规则的最后使用[NC]标志以不区分大小写的方式匹配它。这意味着,该规则不关心字母是大写还是小写。


现在,如果包含您的/users.php的文件夹以/html命名,试试这个:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^users/user/([a-z0-9-_]+) /html/users.php?user=$1 [NC]

只需将“html”更改为包含您的users.php的文件夹的名称。


好的,让我们检查一下这个规则:

RewriteRule ^users/user/([a-z0-9-_]+) /beta/users.php?user=$1 [NC]

但请始终不要忘记RewriteEngine on并评论正在发生的事情。您必须检查的 URL 是我们正在尝试重新映射的不存在的 URL。(例如:domain.com/users/user/name 最后没有斜线。)

于 2013-04-06T17:53:00.430 回答
0
RewriteEngine On     
RewriteRule    ^users/user/$    users.php?user=$1    [NC,L]
于 2013-04-06T14:21:20.550 回答