只是想知道如何使用Mod_Rewrite在我的网址末尾添加一个尾部斜杠?
这是我目前的.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)$ index.php?pageName=$1
我的网址显示如下:
WWWW。的 ****** 的.com /页面名
我想让它像这样展示:
WWWW。的 ****** 的.com /页面名/
URL在内部持有GET请求,但我希望它看起来像一个真正的目录。
答案 0 :(得分: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
之前发生。请注意,当浏览器重定向到以/
结尾的网址时,您的index.php
规则将包含 pageName 参数,其中包含一个尾部斜杠。
答案 1 :(得分:0)
我知道这已经过时了,但对于那些找到它的人来说它仍然有用。
Jon Lin的回答是正确的,我会将此作为评论添加,但我没有足够的声誉。
OP关于删除尾部斜杠的评论,因为你知道它最后会有一个斜杠,你可以$pageName = substr($pageName, 0, -1);
。这就是我至少在做的事情。
希望这很有用。