【问题标题】:mod_rewrite and slash problemmod_rewrite 和斜线问题
【发布时间】:2011-04-20 17:18:43
【问题描述】:

如何重定向这样的网址

http://example/foo/bar/

http://example/foo/bar

http://example/foo/bar.php

这是我的重写规则

RewriteRule ^(.*)$ $1.php

它适用于http://example/foo/bar,但如果 url 以斜杠结尾,则会出现错误(内部服务器错误) 怎样做才能使两种 url 类型正常工作?

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    因为/在组中匹配到了.*,所以你调用http://example/foo/bar/.php

    让这两个作品都使用:

    RewriteCond %{REQUEST_URI} !\.php
    RewriteRule ^(.*)/?$ $1.php
    

    编辑:忘记我们首先询问文件时

    【讨论】:

    • 谢谢,但如果 url 类似于 example.com/foo/bar,它仍然会给我内部服务器错误
    • 是的,因为我也匹配了文件。 RewriteCond 应避免这种情况。所有 .php 文件调用都不会被重写。
    【解决方案2】:

    好吧,如果这真的是你想做的,那么:

    RewriteRule  ^(.*)/?$  $1.php
    

    我没有对此进行测试,但我认为它有效。

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 1970-01-01
      • 2011-06-28
      • 2023-03-19
      • 2023-03-14
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多