我有以下动态网址...
http://www.mydomain.com/v/dynamicvaluehere
我跟随我的htaccess
RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
现在工作正常,我想进一步创建,即
http://www.mydomain.com/v/dynamicvaluehere/Page-dyanamicnumberhere.html
我跟随我的htaccess
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
但它不起作用请帮助... 另外请注意,如上所述,动态值第二个是samy,但只包含动态数字...
答案 0 :(得分:1)
我认为问题可能是你使用通配符。如果您的.htaccess看起来像这样:
RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
然后没有模式会达到第二个参数,因为(.*)/Page-(.*)\.html
实际上会首先落在(.*)
之下。
您可以将通配符优化为以下内容:
RewriteRule ^v/([A-Za-z0-9].*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/([A-Za-z0-9].*)/Page-([0-9].*)\.html$ script.php?name=$1&number=$2 [NC,L]
或者甚至可以尝试将语句的顺序切换为:
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
答案 1 :(得分:0)
由于第一条规则的贪婪性质,您的第二条规则永远无法达成。您可以将其置于第一个规则之上,也可以使您的第一个规则更具体。
尝试以下方法:
RewriteRule ^v/(.+)/Page-(.+)\.html$ script.php?name=$1&number=$2 [NC,L]
RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]