Я пытаюсь создать 301 редирект для перехода из одной системы в другую. У меня есть процесс, который сопоставляет старый URL-адрес с новым URL-адресом и генерирует для меня все 301, но, хоть убей, я не могу получить .htaccess, чтобы запустить перенаправление.
У меня такое ощущение, что это связано с тем, что я должен использовать строку запроса для перехода между двумя системами. В любом случае вот что у меня есть в моем файле .htaccess:
RewriteEngine on
Options +FollowSymLinks
redirect 301 /cgi-bin/classifieds/classifieds.cgi?db=autos&website=FossilCars&language=&session_key=&search_and_display_db_button=on&results_format=long&db_id=46990&query=retrieval http://domain.com/triumph/tr6/46990
Кто-нибудь знает, что я здесь делаю не так? Я уже отключил каталог cgi-bin в своей конфигурации Apache (я знаю это, потому что теперь он загружает нашу пользовательскую страницу 404 вместо общей).
Спасибо
Джош Пеннингтон
По-видимому, Apache не использует строку запроса при определении соответствия для перенаправления URL-адреса. Ответ - установить перезапись URL. Вот пример, который у меня сработал:
# Redirect From
# /cgi-bin/classifieds/classifieds.cgi?db=autos&website=FossilCars&language=&session_key=&search_and_display_db_button=on&results_format=long&db_id=46990&query=retrieval
# To
# /triumph/tr6/46990
RewriteCond %{REQUEST_URI} /cgi-bin/classifieds/classifieds.cgi$
RewriteCond %{QUERY_STRING} ^db=autos&website=FossilCars&language=&session_key=&search_and_display_db_button=on&results_format=long&db_id=46990&query=retrieval$
RewriteRule ^.*$ http://example.com/triumph/tr6/46990? [L,R=301]
? в конце строки RewriteRule удаляет строку запроса из перенаправленного URL-адреса.