2016-04-22 4 views
2

Я пытаюсь настроить 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> 

ответ

2

Часть после знака вопроса не в RewriteRule ссылке.
Вы должны использовать %{QUERY_STRING}:

RewriteCond %{QUERY_STRING} ^/(.*)$ 
RewriteRule ^index\.php$ /%1? [R=301,L] 

%1 в последнем RewriteCond первый (.*).

В вашем случае, без контура, используйте:

RewriteCond %{THE_REQUEST} \s/+index\.php\?([^\s&]+) [NC] 
RewriteRule^/%1? [R=302,L,NE] 
+0

Спасибо за это. Кажется, он работает некорректно, но, похоже, он перенаправляет на 'example.com/rest_of_url?/Rest_of_url' любые идеи? – Wasim

+0

Да, извините, теперь все в порядке, с '?' После '% 1' – Croises

+0

Спасибо, что работает. Проблема только в том, что он выполняет бесконечный цикл переадресации. Я не знаю, почему это так. Я обновил сообщение с помощью всего '.htaccess', потому что это что-то еще противоречивое. Цените помощь. – Wasim

Смежные вопросы