我坚持与rewritemap问题。
我想要做的是将成千上万的几乎随机的url重新导向新的url。 我将手动build立地图,但我需要这个代码来工作。
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.cat_4)(.*) RewriteRule .* ${url_rewrite_map:$1|NOTFOUND}? [R=301,L]
我想地图看起来像这样:
example.com/abcd/cat_4 http://example.com/345_exact_address_of_page
旧的url看起来像:
http://example.com/abcd/cat_4=0?Xi4B7WoN;;54
我想让他们改写成:
http://example.com/345_exact_address_of_page
我尝试了很多东西,但我无法做到这一点…你能帮我吗?
您在地图中使用$ 1作为查找键,但是该参数仅包含您在RewriteRule中捕获的内容。 您在RewriteCond中捕获的string被捕获在%1,%2等中。
所以你应该使用以下几点:
RewriteCond %{HTTP_HOST} (^example\.com) RewriteCond %{REQUEST_URI} (/abcd/cat_4) RewriteRule .* ${url_rewrite_map:%1%2|NOTFOUND} [R=301,L]
好的,我得到了它的工作。 对于其他人,这里是解决scheme。
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.abcd=.*) RewriteRule .* ${url_rewrite_map:%1|$1}? [R=301,L]
对Krist van Besien的回应我相信你不能用%1%2%3作为前一行,前两行等。%n只是指最后一个RewriteCond行,所以我不得不把所有的东西放在一行中,然后检查地图。 但是,无论如何,谢谢你,你把我推向了好的方向:)