2

只是想知道如何使用 Mod_Rewrite 在 URL 末尾添加斜杠?

这是我目前的 .htaccess 文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ index.php?pageName=$1

我的网址显示如下:

中国的膳宿条件。****** .com/pageName

我希望它显示如下:

中国的膳宿条件。****** .com/pageName/

该 URL 在内部持有一个 GET 请求,但我希望它看起来像一个真正的目录。

4

2 回答 2

6

您可以轻松地将尾部斜杠添加到客户端看到的 URL,但您必须考虑重定向浏览器后收到的请求中的尾部斜杠。

所以重定向可能看起来像这样:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

你会希望它高于:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ index.php?pageName=$1

规则集,因为重定向需要在路由到index.php. 请注意,当浏览器被重定向到以 结尾的 URL 时/,您的index.php规则将包含带有尾部斜杠的pageName参数。

于 2012-10-04T09:10:36.657 回答
0

我知道这是旧的,但它对其他找到它的人仍然有用。

Jon Lin 的回答是正确的,我会将其添加为评论,但我没有足够的声誉。

OPs 评论删除尾部斜杠,因为你知道它最后总是有一个斜杠,你可以$pageName = substr($pageName, 0, -1);. 这就是我至少正在做的事情。

希望这是有用的。

于 2014-01-10T02:38:30.753 回答