URL Regex - 从文件名和URL结尾删除尾部斜杠?

时间:2011-02-05 13:37:47

标签: regex .htaccess mod-rewrite

所以我有这个正则表达式问题,并想知道是否有人可以帮助我?

如果用户访问http://example.com/index.php/,我如何修改/添加到我的正则表达式以防止最后的斜杠?

我目前有一个名为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

注意:我也在重写http://example.com/index.php?page=1http://example.com/page/1等,同样的问题,如何防止斜杠?

非常感谢,我非常感谢任何帮助:)

1 个答案:

答案 0 :(得分: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

已编辑以显示完整的规则

第二次编辑

中添加
RewriteCond %{REQUEST_FILENAME} !-d

以上新规则允许仍然访问directorys而不会导致无限重定向循环