Php 测试字符串的htaccess请求\u URI,使用RewriteRule重新生成SEO

Php 测试字符串的htaccess请求\u URI,使用RewriteRule重新生成SEO,php,.htaccess,mod-rewrite,seo,Php,.htaccess,Mod Rewrite,Seo,我正在尝试让.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] 例如,这些字符串应该成功并执行重写规则 http://abc.

我正在尝试让.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]
例如,这些字符串应该成功并执行重写规则

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
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/
这些字符串应该失败,并且不执行重写规则

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
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

它在第二次测试中不断取得成功。显然我希望它失败,我做错了什么?

“显然我希望它失败…”指的是这个请求
abc.com/asdf asdf/test.html
。在您的“应该失败”示例中,这种明显的模式在哪里?这对我来说似乎不太明显,目录
asdf asdf
不在你的示例中。@faa,基于OP帖子顶部的
RewriteCond
RewriteRule
。@Marty感谢你的澄清。但是,如果这些规则不起作用,它们怎么能用来解释OP试图实现的目标呢?@faa我这么说显然是因为URI/asdf asdf/DEFINATY与我上面写的RewriteCond不起作用,这意味着我希望它在这种情况下失败,并允许Web服务器根据请求完成对URI的调用。NFM我发现了问题。我在服务器上输入了一个目录名,我的htaccess正在处理ErrorDocument 404/index.php?tpl=\u错误。尽管如此,这还是一个好消息,因为我上面的所有代码似乎都工作得很好。