При настройке переадресации Htacces отлетает GET, как быть?

RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{QUERY_STRING} (?:^|&)chpu\=(.+)(?:$|&)
#RewriteRule ^services/%1? [L,R=301]

RewriteCond %{REQUEST_URI} /services/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /services/services.php/$1 [L]

RewriteCond %{REQUEST_URI} /services/
RewriteCond %{QUERY_STRING} ^chpu=([^&]+)&id=([^&]+) [NC]
RewriteRule (.*) /services/%1/%2? [R=301,L]

Получилось сделать переадресацию :

http://сайт/services/services.php?chpu= kosmeticheskij-remont-komnaty & id=1

На http://сайт/services/kosmeticheskij-remont-komnaty/1

Но теперь отваливается GET, как быть?
  • Вопрос задан
  • 23 просмотра
Пригласить эксперта
Ответы на вопрос 1
Lakika
@Lakika
Sicario
Для того, чтобы сохранить GET-параметры при переадресации на другую страницу, вам нужно добавить флаг [QSA] (Query String Append) в конце правила переадресации.

Например, если вы хотите переадресовать запрос с параметром "chpu" и "id" на страницу с URL "/services/{chpu}/{id}", используйте следующее правило:

RewriteEngine On
RewriteCond %{REQUEST_URI} /services/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^chpu=([^&]+)&id=([^&]+) [NC]
RewriteRule (.*) /services/%1/%2? [R=301,L,QSA]

Обратите внимание на флаг [QSA], который сохраняет GET-параметры при переадресации. Теперь, когда пользователь запрашивает страницу с параметрами, они будут сохранены при переадресации и переданы на новую страницу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы