【问题标题】:Another mod_rewrite trailing slash question另一个 mod_rewrite 斜杠问题
【发布时间】:2009-02-15 17:40:38
【问题描述】:

我的.htaccess 文件中有以下重写规则:

RewriteEngine on
RewriteRule ^news/([0-9]+)/?$ /?action=news&start=$1 [L]
RewriteRule ^man/([a-zA-Z0-9_]+)/?$ /?action=man&page=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)/?$ /?action=$1 [L]

然后全部以/? 结尾,以检查可选的尾部斜杠。这行得通——这意味着我可以使用http://www.site.com/news/http://www.site.com/news 来访问news 页面,这正是我想要的。问题是,虽然http://www.site.com/news/ 工作正常并且静默重定向和所有有趣的东西,但http://www.site.com/news 明显重定向到http://www.site.com/news/?action=news 出于某种原因。他们都提出了同一个网站,但由于某种原因,如果我去掉尾部的斜杠,URL 会发生变化并且看起来很讨厌。

有什么想法吗?我的.hyaccess 文件中没有其他规则。我还要指出http://www.site.com/news/0http://www.site.com/news/0/ 不会遇到同样的问题。他们俩都无形地重定向到http://www.site.com/?action=news&start=0,这就是我想要的。这似乎只是第三条规则的问题。

如果有帮助,该站点位于 SourceForge.net。

【问题讨论】:

    标签: apache mod-rewrite sourceforge


    【解决方案1】:

    一个疯狂的猜测:有一个名为“news”的目录,自动 Apache 目录“添加尾部斜杠”重定向正在启动并以一种奇怪的方式与您的 RewriteRule 交互。如果是这样的话,

    DirectorySlash Off
    

    可能有帮助。

    【讨论】:

    • 太棒了!谢谢你。我不确定为什么会发生这种情况,但 Apache 是一个复杂的程序,我愿意现在将其注销。
    【解决方案2】:

    也许是MultiViews 导致了这种行为。尝试禁用此选项:

    Options -MultiViews
    

    另一个猜测:删除替换中的前导斜杠。

    【讨论】:

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