2011-02-05 181 views
1

所以我有这个正则表达式的问题,并想知道是否有人可以帮助我?URL正则表达式 - 从文件名和URL结尾删除尾部斜杠?

如果用户访问http://example.com/index.php/我如何修改/添加到我的正则表达式以防止结尾处的斜线(s)?

我现在有一个网页叫做post.php中,可以像这样http://example.com/reviews/reviewTitle/http://example.com/news/newsTitle/

再次

,我怎么能阻止这个结尾斜杠访问?

下面是正则表达式我到目前为止:

RewriteEngine on 
RewriteRule ^reviews/([^/\.]+)/?$ reviews/post.php?title=$1 [L] 
RewriteRule ^news/([^/\.]+)/?$ news/post.php?title=$1 [L] 
RewriteRule ^page/(.*) index.php?page=$1 

注:IM也重新书写http://example.com/index.php?page=1http://example.com/page/1等,同样的问题,我怎么能防止尾随斜线?

非常感谢,我非常感谢所有帮助:)

回答

1

尝试添加该规则之后RewriteEngine on

RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ $1 [R=301] 
RewriteRule ^reviews/([^/\.]+)$ reviews/post.php?title=$1 [L] 
RewriteRule ^news/([^/\.]+)$ news/post.php?title=$1 [L] 
RewriteRule ^page/(.*) index.php?page=$1 

编辑展示全套的规则

编第2次添加在

RewriteCond %{REQUEST_FILENAME} !-d 

上面的新规则允许导演仍然可以访问,而不会导致无限重定向循环

+0

嘿感谢您的答复,但它会导致http://example.com/reviews/reviewTitle或http://example.com /新闻/ reviewTitle根本不工作(404未找到),并添加一个尾部斜线导致内部服务器错误:/ – Mac 2011-02-05 13:48:20