【问题标题】:htaccess rewrite doesn't work when path has same name as file当路径与文件同名时,htaccess 重写不起作用
【发布时间】:2015-06-09 20:39:48
【问题描述】:

我有一个奇怪的问题。这是我的 htaccess 文件中 URL 重写的两个示例。第一个不起作用,并在 PHP 文件中将“查询”的变量返回为 null。

RewriteRule ^search/([A-Za-z0-9-\s]+)$ search.php?query=$1

第二个(我用作测试的)效果很好。

RewriteRule ^foo/([A-Za-z0-9-\s]+)$ search.php?query=$1

我发现问题在于模式的开头不能与我正在使用的php文件的名称相同。这一直对我有用,我现在才遇到这个问题,因为我已经搬到了一个新的服务器上。

是否有某种设置导致了这种情况?

【问题讨论】:

  • 是wordpress吗?因为,wp 不喜欢你使用某些词,搜索就是其中之一。如果你正在使用 /search/somekeyword,wp 可能已经在使用 /search/
  • @DougCassidy 不,它不是 wordpress 或任何其他 CMS/框架。
  • 似乎是多视图问题

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

您需要将此行放在 .htaccess 顶部以关闭 MultiViews 选项:

Options -MultiViews

选项 MultiViews 由运行 before mod_rewriteApache's content negotiation module 使用,并使 Apache 服务器匹配文件的扩展名。所以/file 可以在 URL 中,但它会服务于/file.php

【讨论】:

  • 谢谢!完全忘记了 MultiViews。必须在此服务器上设置为默认值。
猜你喜欢
  • 2021-07-07
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2017-08-10
  • 1970-01-01
相关资源
最近更新 更多