【发布时间】:2014-07-27 11:19:34
【问题描述】:
我的 .htaccess 文件的全部内容目前如下所示:
RewriteEngine on
RewriteRule ^([a-z]+)/?$ index.php?page=$1 [NC]
这应该将所有看起来像http://example.com/folder/ 的网址替换为http://example.com/index.php?page=folder
如果我使用 http://example.com/FOLDER/,这可以正常工作,但当我使用 http://example.com/folder/ 时就不行 - 我只是收到一个 404 错误,说明该文件夹不存在
据我所知,由于 NC(不区分大小写)标志,这不应该发生。我还尝试用 [A-Z]、[a-zA-Z] 等替换正则表达式的 [a-z] 部分,但均无济于事
我们将不胜感激地收到任何朝着正确方向的解决方案或推动 :-)
【问题讨论】:
-
这听起来很奇怪。我认为它一直被转发到
index.php,它根据其代码逻辑抛出 404。否则,如果这是您的所有 htaccess 代码,则/FOLDER/不可能匹配,而/folder/不匹配[a-z]+模式(即使使用NC标志) -
你能检查一下apache错误日志吗?
-
我将代码从我的虚拟主机移到了我的 VPS 上,它在那里运行良好,所以我认为这只是虚拟主机公司正在进行的一些奇怪的配置
-
是的,我也试过了,效果很好。尝试破坏 htaccess 文件以获取 500 错误,以确保您正在覆盖主文件。
-
^(\w+)/?$ index.php?page=$1可能有效。以前从未见过Mod Rewrite...
标签: regex apache .htaccess mod-rewrite rewrite