@fomm

Как разобраться с редиректом в htaccess?

Товарищи, я нагуглил как сделать простой редирект 301 /user/userName/ на site.com
оно работает:
Redirect 301 /user/userName/ http://site.com/

но не хватает скилла понять как сделать редирект с урла типа

/category/podcategory/621-tipa-nazvanie-urla.html
на site.com

то есть аналогичная конструкция не работает на таком урле. Я хочу все что до .html редиректить на морду. Видимо наличие слешей и вложенности как-то по другому описывается, пробовал по разному: нет редиректа, тупо 404. Клянусь - гуглил. Ну не хватает ума :) Пробовал варианты (в т.ч. с самодеятельностью)

RewriteRule (.+)\.html?$ https://site.com/$1 [R=301,L]

- не работает

Это все происходит на последнем вордпрессе и ниже исходный хтаксес . Может что-то конфликтует и не дает сделать редирект.

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
shambler81
@shambler81 Куратор тега htaccess
Все это лядство всегда выше ЧПУ! ЧПУ это то что инициализирует движок ( если совсем в кратце) в твоем случае это посел RewriteBase /
Сюда вставляешь вот это
RewriteCond %{REQUEST_FILENAME} !-d
# если это не директория
RewriteCond %{REQUEST_FILENAME} !-f
# и если это не файл
RewriteCond %{REQUEST_URI} (.+)\.html$
# И если в урле есть
RewriteRule ^(.*)$ http://site.ru/%1 [R=301,L]
#то выполняется условие в котором $ мы вообще не испльзуем а используем % то же самое толоко из RewriteCond ( то что в скобочках предидущего правила. И так Правило говорит что пофиггу какой урл мы берем что было в скобках в предидущем правиле и все.




RewriteRule . /index.php [L]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы