以下是我们的.htaccess文件。所有301重定向都可以正常工作。之后在文件中没有我们用于重定向的中间ReWriteRule工作。 store / locations.php的第一个重写规则非常简单,应该可以正常工作。
我确实认识到在那个简单的重写之后,所有其他的重写都包含一个“?”这可能需要我们做一些其他事情(即逃避“?”)。但我甚至无法让重写规则在简单的url上工作,所以想知道我们可能做错了什么。
有趣的是重写条件& .htaccess文件底部的重写规则确实可以正常工作(将任何非www url转换为www url)。
Redirect 301 /store/index.php http://www.pelleline.com
Redirect 301 /store/contact-us.php http://www.pelleline.com/contact-us.php
Redirect 301 /index.html http://www.pelleline.com
Redirect 301 /index.htm http://www.pelleline.com
Redirect 301 /store/index.html http://www.pelleline.com
Redirect 301 /store/index.htm http://www.pelleline.com
RewriteEngine on
RewriteRule ^store/locations.php?/?$ http://www.pelleline.com/locations.php [L,R=301]
RewriteRule ^store/product-list.php?a_testoni_shoes-pg1-cid46.html?/?$
http://www.pelleline.com/a-testoni-shoes/cid-46-1.html [L,R=301]
RewriteRule ^store/product-list.php?alden_shoes-pg1-cid47.html?/?$
http://www.pelleline.com/alden-shoes/cid-47-1.html [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
ErrorDocument 404 /404.php
AddDefaultCharset UTF-8
答案 0 :(得分:0)
您无法在重写规则中与查询字符串匹配,您需要在条件中使用%{QUERY_STRING}
var:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^/?$
RewriteRule ^store/locations.php$ http://www.pelleline.com/locations.php [L,R=301]
RewriteCond %{QUERY_STRING} ^a_testoni_shoes-pg1-cid46.html?/?$
RewriteRule ^store/product-list.php$ http://www.pelleline.com/a-testoni-shoes/cid-46-1.html [L,R=301]
RewriteCond %{QUERY_STRING} ^alden_shoes-pg1-cid47.html?/?$
RewriteRule ^store/product-list.php$ http://www.pelleline.com/alden-shoes/cid-47-1.html [L,R=301]