.htaccess RewriteRule вызывает ошибку ERR_TOO_MANY_REDIRECTS - PullRequest
0 голосов
/ 06 апреля 2019

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

Я не понимаю, как мой код может сделать цикл перенаправления.

Вот мой .htaccess, я взял по умолчанию для Symfony, затем я добавил это после RewriteEngine On :

RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/admin [L,R=301,NC]

И полный .htaccess:

DirectoryIndex index.php

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^sci-hl.com [NC,OR]
    RewriteCond %{HTTP_HOST} ^www.sci-hl.com [NC]
    RewriteRule ^(.*)$ https://www.sci-hl.com/admin [L,R=301,NC]

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]

    RewriteRule ^ %{ENV:BASE}/index.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        RedirectMatch 307 ^/$ /index.php/
    </IfModule>
</IfModule>

Я просто хочу перенаправить пользователей, когда [http://example.com, https://example.com, http://www.example.com, https://www.example.com] до https://www.example.com/admin

1 Ответ

0 голосов
/ 06 апреля 2019

Вам необходимо исключить целевой путь, на который вы перенаправляете URL-адреса своего сайта:

 RewriteCond %{HTTP_HOST} ^example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteCond %{REQUEST_URI} !/admin
RewriteRule ^(.*)$ https://www.example.com/admin [L,R=301,NC]

В противном случае ваш /admin URL-адрес также перенаправляет на /admin, вызывая бесконечный цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...