Я пытаюсь настроить 301 переадресацию на старый адрес службы поддержки Kayako. Старый URL был;Соответствие вопросительного знака в .htaccess
example.com/index.php?/rest_of_url
Я настроил переписывание поэтому URL, красивее example.com/rest_of_url
, и я пытаюсь 301 редиректа всех старых URL на новые. Я пробовал следующее, но они, похоже, не работают;
RewriteRule ^index.php?/(.*)?$ /$1 [R=301,L]
RewriteRule ^index.php\?/(.*)?$ /$1 [R=301,L]
RewriteRule ^index.(.*)/(.*)?$ /$2 [R=301,L]
Я не могу это понять.
EDIT:
Здесь весь файл .htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{QUERY_STRING} ^/(.*)$
RewriteRule ^index\.php$ /%1? [R=302,L]
RewriteCond $1 !^(admin|api|console|favicon\.ico|robots\.txt|sitemap\.xml|index\.php|tiny_mce_gzip\.php|cron|onsite|staff|rss|setup|visitor|winapp|wallboard|__swift) [NC]
RewriteCond $1 !\.(jpg|jpeg|png|gif|js|css|htm|html)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond $1 !^(favicon\.ico|robots\.txt|sitemap\.xml|index\.php|tiny_mce_gzip\.php|__swift) [NC]
RewriteCond $1 !\.(jpg|jpeg|png|gif|js|css|htm|html)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]*)/(.*)$ $1/index.php?/$2 [L]
</IfModule>
Спасибо за это. Кажется, он работает некорректно, но, похоже, он перенаправляет на 'example.com/rest_of_url?/Rest_of_url' любые идеи? – Wasim
Да, извините, теперь все в порядке, с '?' После '% 1' – Croises
Спасибо, что работает. Проблема только в том, что он выполняет бесконечный цикл переадресации. Я не знаю, почему это так. Я обновил сообщение с помощью всего '.htaccess', потому что это что-то еще противоречивое. Цените помощь. – Wasim