我试图让我的 .htaccess 规则来测试字符串模式。
RewriteCond %{REQUEST_URI} ^/[a-z]{2}(-[a-z]{2})?/.+$ [NC]
如果成功,我需要为我的 PHP 脚本将其动态重写为以下内容。
RewriteRule ^/([a-z]{2}(-[a-z]{2})?)/([a-z0-9-]{1,128})[\.html]? /index.php?lng=$1&tpl=$2 [QSA,L,NC]
例如,这些字符串应该成功并执行 RewriteRule。
http://abc.com/ab
http://abc.com/ab-cd
http://abc.com/ab/some-page
http://abc.com/ab-cd/some-page
http://abc.com/ab-cd/some-page.html
这些字符串应该失败并且不执行 RewriteRule。
http://abc.com/1
http://abc.com/a
http://abc.com/12
http://abc.com/ab_
http://abc.com/ab-cd
http://abc.com/ab-cd/
在上述失败的情况下,他们应该简单地继续,根据服务器的实际内容,要么成功,要么失败。
问题
我在我的服务器上放置了一个文件,其中不包含这样的代码:
abc.com/asdf-asdf/test.html
它在 RewriteCond 测试中不断取得成功。显然我希望它失败,我在这里做错了什么?