.htaccess RewriteRule导致ERR_TOO_MANY_REDIRECTS错误

时间:2019-04-06 16:24:40

标签: .htaccess symfony4

我正在托管一个Symfony项目,我想将一个唯一的URL重定向到另一个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.comhttps://example.comhttp://www.example.comhttps://www.example.com] https://www.example.com/admin

1 个答案:

答案 0 :(得分:0)

您需要排除将网站网址重定向到的目标路径:

 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,从而导致无限循环。