2014-11-18 2 views
1

Вот это дело я получил эту строку с 2 необязательных параметровHtaccess строка Перенаправление запроса + сила перенаправления

/index.php?lang=en&p=about 

это может быть оба пути

/index.php?p=about&lang=bg 

и параметр p Необязательные может пойти без p или lang один

До сих пор я мог перенаправить один из них от (1)/index.php?p=about к (2)/about, что он не делает, и я мог только заставить его наоборот, чтобы перенаправить (1) к (2). При вводе (1) перенаправить вас на (2). Я сделал это в обратном порядке, используя [R].

Я действительно лысый в этом htaccess шаблонах и прочее, поэтому более сложный вопрос касается второго запроса lang, так как вы предполагаете, что это касается изменения языка, поэтому я должен сделать это как

от /index.php?lang=en&p=about к /en/about, но и /index.php?p=about&lang=en привести к /en/about и те переадресовывает быть принужден, когда вы набираете весь запрос будет перенаправлен на сео дружественной версии.

Кроме того, если у вас нет lang один он должен идти по умолчанию en

Я тестирование прямо сейчас различные примеры редирект, но до сих пор ничего не работает должным образом.

ответ

0

Вы можете использовать это правило, которое будет поддерживать параметры запроса в любом порядке:

RewriteEngine On 
RewriteBase/

RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{QUERY_STRING}  (?:^|&)lang=([^&]*) 
RewriteCond %1::%{QUERY_STRING} (.*?)::(?:|.*&)p=([^&]*) 
RewriteRule ^(index\.php)?$ /%1/%2? [L,NC,R=302] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([a-z]+)/(\w+)/?$ index.php?lang=$1&p=$2 [L,QSA] 
+0

Это перенаправляет на несуществующей странице, не могли бы вы дать мне подсказку, как использовать эту строку запроса с 2 параметрами как опция? И это не удаляет запрос: «/ en/about? & Lang = en & p = about» – dev

+0

Вы не видели '/ en/about' в браузере после перенаправления? Также см. Мой обновленный ответ с полным .htaccess – anubhava

+0

Хорошо работает, спасибо. Я заметил, что есть проблема, когда я ввожу только запрос языка/en /, не существует способа проверить строку запроса (en | es)? Я заметил, когда читал о некоторых трюках htaccess. – dev

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