Объедините несколько правил 301 в одно правило mod_rewrite - PullRequest
0 голосов
/ 14 мая 2019

Я изменил структуру URL своего веб-сайта и хотел бы применить следующие правила перенаправления:

1) Перенаправление http, http + www, https на https + www.

2) Если слаг страницы изменился, я бы хотел иметь определенный редирект: domain.fr/old-slug перенаправляет на domain.fr/new-slug

Веб-сайт Wordpress установлен на NNGINX + Apache2 Hybridсервер

Я добавил это в свой файл .htaccess для перенаправления на https://www расширение:

 RewriteEngine On
 RewriteCond %{HTTP:X-Forwarded-Proto} !https
 RewriteRule ^(.*)$ https://www.domain.fr/$1 [R=301,L]

Это правило перезаписи работает, как и ожидалось.

Но когда я добавляю конкретные правила для перенаправления определенных страниц, как это:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https

#specific Redirects
RewriteRule ^old-slug/?$ https://www.domain.fr/new-slug/? 
[R=301,NE,NC,L]

#redirect to https://www
RewriteRule ^(.*)$ https://www.domain.fr/$1 [R=301,L]

При открытии веб-сайта в моем браузере я получаю следующую ошибку: ERR_TOO_MANY_REDIRECTS

В настоящее времяработает следующий код:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://www.domain.fr/$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

Я хотел бы найти проблему в своей директиве, чтобы у меня были правильные перенаправления для определенных URL

...