我有这个条件和规则,想知道这里到底发生了什么
RewriteCond %{REQUEST_URI} ^/sitepages/newversion/
RewriteCond %{QUERY_STRING} ^(.*[?|&])page=dynamicpage
RewriteRule ^sitepages/newversion/(.*)$ /pages/oldversion/$1 [L]
对这条线的细节解释也非常感兴趣
RewriteRule ^sitepages/newversion/(.*)$ /pages/oldversion/$1 [L]
感谢
答案 0 :(得分:1)
首先,您可以更好地重写您的规则:
RewriteCond %{QUERY_STRING} (?:^|&)page=dynamicpage(?:&|$) [NC]
RewriteRule ^sitepages/newversion/(.*)$ /pages/oldversion/$1 [L,NC]
现在解释部分。
RewriteCond
匹配URI与查询参数page=dynamicpage
RewriteRule
匹配的URI与模式sitepages/newversion/(.*)$
匹配/sitepages/newversion/abc123
或/sitepages/newversion/foobar
(.*)
正在捕获组,以便在我的第一个示例中使用值$1
填充abc123
。/pages/oldversion/$1
对于相同的示例将成为/pages/oldversion/abc123
。NC
标志不用于大小写比较。L
标志用于Last
,使mod_rewrite
再次运行重写循环。答案 1 :(得分:1)
RewriteCond %{REQUEST_URI} ^/sitepages/newversion/
如果请求网址以" / sitepages / newversion /"开头,
RewriteCond %{QUERY_STRING} ^(.*[?|&])page=dynamicpage
,查询字符串包含" page = dynamicpage",
RewriteRule ^sitepages/newversion/(.*)$ /pages/oldversion/$1 [L]
然后在" sitepages / newversion /"之后获取网址的一部分;并将请求重定向到" / pages / oldversion /(其余网址)"。
例如:
http://domain.com/sitepages/newversion/someleaf?page=dynamicpage
将被重定向到
http://domain.com/pages/oldversion/someleaf?page=dynamicpage