Я застрял с проблемой перезаписи карты.
Я хочу перенаправить тысячи старых почти случайных URL-адресов на новые. Я построю карту вручную, но мне нужен этот код для работы.
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
Старые адреса выглядят так:
и я хочу их переписать в:
Я много чего перепробовал, но у меня ничего не получилось ... Вы можете мне с этим помочь?
Хорошо, у меня все заработало. Для всех остальных вот решение.
RewriteCond %{HTTP_HOST}%{REQUEST_URI}\?%{QUERY_STRING} (^example\.com.abcd.abcd=.*)
RewriteRule .* ${url_rewrite_map:%1|$1}? [R=301,L]
Чтобы ответить на ответ Криста ван Бесиена: я считаю, что вы не можете использовать% 1% 2% 3 как одну строку до, две строки до и т. Д.% N относится только к последней строке RewriteCond, поэтому мне пришлось поместить все в одну строку и затем проверьте карту. Но все равно спасибо, ты подтолкнул меня в правильном направлении :)
Вы используете $ 1 в качестве ключа поиска на своей карте, но этот параметр просто содержит то, что вы записываете в RewriteRule. Строки, которые вы записываете в свой RewriteCond, записываются в% 1,% 2 и т. Д.
Итак, вы должны использовать что-то вроде:
RewriteCond %{HTTP_HOST} (^example\.com)
RewriteCond %{REQUEST_URI} (/abcd/cat_4)
RewriteRule .* ${url_rewrite_map:%1%2|NOTFOUND} [R=301,L]