【问题标题】:URL Regex - remove trailing slash from file name and end of URL?URL 正则表达式 - 从文件名和 URL 结尾删除斜杠?
【发布时间】:2011-02-05 13:37:46
【问题描述】:

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

如果用户访问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=1 重写为http://example.com/page/1 等,同样的问题,我怎样才能防止尾部斜杠?

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

【问题讨论】:

    标签: regex .htaccess mod-rewrite


    【解决方案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
    

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

    【讨论】:

    • 您好,感谢您的回复,但它会导致 example.com/reviews/reviewTitleexample.com/news/reviewTitle 根本无法工作(404 Not Found)并且添加尾部斜杠会导致内部服务器错误:/
    • 再次感谢,但它现在会导致无限循环的重定向:/(Firefox 检测到服务器正在以永远不会完成的方式重定向该地址的请求。)
    • Woo Hoo :D 它现在可以工作了,尽管我在 $1 之前添加了一个 / 以使其重定向到根目录,因为它正在重定向到 var/www/ 文件夹。谢谢!
    • 修复添加 RewriteBase / 我会为您发布上面的完整代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多