Apache RewriteRule - 无法匹配字符串的开头

时间:2016-06-22 23:10:21

标签: regex apache .htaccess mod-rewrite

我试图在.htaccess文件中使用正则表达式匹配网址。

我能够使用" $"来匹配字符串的结尾。很好,但是当我尝试使用" ^"匹配字符串的开头时,RewriteRule停止工作。

这是我的.htaccess文件:

RewriteEngine On
RewriteBase "/"

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule "^example-url$" "index.php"

没有" ^"正则表达式会起作用,但太松懈了。我现在已经花了几个小时摆弄这个,但是我不知道还有什么可以尝试,因为这个非常基本的正则表达式已经在我试过的每个正则表达式测试器中都有效。

我最好的猜测是,它与字符串的起点实际上有什么关系,但我不确定如何测试它,因为它应该在顶级域名之后启动" /"

修改 将.htaccess移动到html文件夹使我的所有问题都消失了,上面的.htaccess文件现在运行正常。非常感谢@Riad Loukili和@ P0lT10n的帮助。

我猜测我的问题是由我的虚拟目录设置方式引起的。

1 个答案:

答案 0 :(得分:3)

不确定但请尝试

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^example-url$ index.php

我在This .htaccess tester上尝试了它并且有效。

可能的解释:您已经指定了RewriteBase,无需使用正则表达式中的/启动网址。