Назад | Перейти на главную страницу

Попытка перенаправить с косой чертой и без нее

Я переместил блог в поддомен, и на этом поддомене все категории изменились, поэтому я хочу сделать список из 301 перенаправления со старого домена на поддомен (другой хостинг).

Проблема, с которой я столкнулся, заключается в добавлении косой черты в конце, поэтому мне не нужно перечислять каждый URL дважды.

Я пробовал это в /blog/.htaccess:

RewriteEngine On

#RewriteRule ^(.*)$ http://domain.com/blog/$1/ [L,R=301] 

Redirect 301 /blog/test/ https://new.domain.com/test/
Redirect 301 /blog/example/ https://new.domain.com/example/
(etc...)

Однако это не работает, поскольку браузер обнаруживает слишком много перенаправлений.

Какой здесь правильный синтаксис?

Я также пробовал:

RedirectMatch /blog/test/?$ https://new.domain.com/test/ [L,R=301] 

Но это, похоже, совсем не работает.

Пожалуйста, используйте следующий синтаксис

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f гарантирует, что существующие файлы не будут добавлены косой чертой.

RewriteCond %{REQUEST_URI} !example.php исключает образец URL, который нельзя переписывать.

RewriteCond% {REQUEST_URI}! (. *) / $, Наконец, срабатывает, когда URL-адреса не содержат косой черты в конце - это все, что нам нужно. Теперь нам нужно перенаправить этот URL с помощью косой черты в конце:

RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301] перенаправляет 301 на URL-адрес с добавленной косой чертой за нас. Вы должны заменить domain.com своим URL-адресом.

Синтаксис, который кажется работающим:

RedirectMatch 301 /blog/test/?$ https://new.domain.com/test/