繁体   English   中英

非常简单的RewriteRule不起作用

[英]Very simple RewriteRule doesn't work

我有index.php只有一行

<?php echo $_GET['a']; ?>

而且我还有一个只有两行的.htaccess

RewriteEngine on
RewriteRule ^([a-z]+)$ ?a=$1

为什么当我输入/ab.cd我得到404错误,但如果我输入/abcd. 它没有给我404错误和PHP回声abcd (没有网址末尾的点)。

任何人都可以告诉我为什么我的重写规则允许abcd. 通过而不是给我404错误?

编辑:

我刚刚在我的开发环境中测试了你的Rewriterule(独立),它确实有效。 它不允许/abcd. 通过我的 - 它给了我一个404错误,所以在你的环境中必须有某些东西影响你的规则。

- 初始后

看起来你的/ /ab.cd的句点(。)没有在Rewriterule中定义 - 只是小写的az字符。

采用:

RewriteEngine on
RewriteRule ^([a-z.]+)$ ?a=$1
                  ^

您使用的正则表达式([az]+)仅匹配小写字母“a”到“z”。 它永远不会匹配一系列字母后面跟着一系列字母后跟一系列字母,比如你用ab.cd尝试。

如果你想匹配句号,你需要([az.]+)

我只是重建了我的服务器上的情况,我得到了所需的404错误。 我只将[L]标志添加到RewriteRule中。

的.htaccess

RewriteEngine on
RewriteRule ^([a-z]+)$ test.php?a=$1 [L]

test.php的

<?php echo $_GET['a']; ?>

是否有任何其他重写规则可能会干扰您的请求? 即使在包含的其他文件中? 在这种情况下,L标志可能会帮助您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM