2012-10-04 164 views
2

只是想知道如何使用Mod_Rewrite在我的URL末尾添加尾部斜线?添加尾部斜线mod_rewrite

这是我目前的.htaccess文件:

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

我的网址显示,像这样:

WWWW。 ****** .COM /网页

我想让它显示像这样:

WWWW。 ****** .com/pageName/

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

回答

6

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

所以重定向可以是这个样子:

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,并带有斜杠。

+0

工作,但现在的问题正如你所说,GET现在包括在实际价值的斜线:/任何想法如何使它只是肤浅的? –

0

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

乔恩林的答案是正确的,我将此添加为评论,但我没有足够的声誉。

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

希望这是有用的。

+0

我说我想添加尾部斜线,而不是删除它们。而且,这只有在斜线包含在数据库记录中时才有效。我在做的方式要求你使用mod_rewrite使用apache,与PHP mate无关,因为我们正在重写URL显示请求的方式。 –