smolyakov770
@smolyakov770
Веб Дизайнер Верстальщик

Как настроить ЧПУ через .htaccess?

Вопрос возник в следующем
Вот собственно мой htaccess
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^index.php$ / [QSA,R]
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^search/([^/\.]+)/?$ search?id=$1 [NC,L]

По идее в этом - RewriteRule ^search/([^/\.]+)/?$ search?id=$1 [NC,L]
должны происходить действия замен адреса
с https://site.ru/search?id=1 на https://site.ru/search/1
этого не происходит но как только я меняю
это - https://site.ru/search/1 на такой адрес https://site.ru/search.php/1
все работает как надо, только не пойму почему не убираеться .php теперь?
  • Вопрос задан
  • 1535 просмотров
Решения вопроса 1
shambler81
@shambler81 Куратор тега htaccess
Гет не является частью урла и по этому он и не выделяется
RewriteCond %{QUERY_STRING} (^|&)id\=1($|&)
RewriteRule ^search$ /search/1? [L,R=301]

RewriteCond %{QUERY_STRING} - ловим сам гет по краям группы это знак & поскольку гет может быть в любом месте ( в вашем случае вообще можно убрать)
В конце реврайт рула стоит знак ? он удалит гет парметры.

Теперь отсалось приветси это в жизнеспособный вид
мы заменяем цифру 1 на регулярку и вставляем е ев реврайт рул, а поскольку рул сам может групировать то вместо $ используются %
RewriteCond %{QUERY_STRING} (^|&)id\=(.+)($|&)
RewriteRule ^search$ /search/%2? [L,R=301]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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