
rewritemap 문제가 발생했습니다.
내가 하고 싶은 것은 수천 개의 오래된 거의 무작위 URL을 새로운 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
이전 URL은 다음과 같습니다.
나는 그들이 다음과 같이 다시 작성하기를 원합니다.
많은 것을 시도했지만 제대로 작동하지 않습니다. 도와주실 수 있나요?
답변1
$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]
답변2
알겠습니다. 작동했습니다. 다른 사람에게는 여기에 해결책이 있습니다.
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 줄만 참조하므로 모든 것을 한 줄에 넣어야 했고 그런 다음 지도를 확인하세요. 하지만 어쨌든 고마워요. 저를 좋은 방향으로 이끌어주셔서요 :)