我正在尝试使用 .htaccess 文件中的正则表达式匹配 url。
我可以使用“$”匹配字符串的结尾,但当我尝试使用“^”匹配字符串的开头时,RewriteRule 停止工作。
这是我的 .htaccess 文件:
RewriteEngine On
RewriteBase "/"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule "^example-url$" "index.php"
没有“^”,正则表达式可以工作,但是太松散了。我现在已经摆弄了几个小时,但我不确定还能尝试什么,因为这个非常基本的正则表达式在我尝试过的每个正则表达式测试器中都有效。
我最好的猜测 atm 是它与字符串的实际开头有关,但我不确定如何测试它,因为它应该紧接在顶级域名之后以“/".
编辑: 将 .htaccess 移动到 html 文件夹使我所有的问题都消失了,上面的 .htaccess 文件现在可以正常工作了。非常感谢@Riad Loukili 和@P0lT10n 的帮助。
我猜我的问题是由我的虚拟目录设置方式引起的。
最佳答案
不确定但试试
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^example-url$ index.php
我在 This .htaccess tester 上试过了它奏效了。
可能的解释:您已经指定了 RewriteBase,正则表达式中的 url 不需要以/开头。
关于regex - Apache RewriteRule - 无法匹配字符串的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979684/