[英]Simple RewriteRule for mod_rewrite with .htaccess doesn't work
[英]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.