在使用htaccess时,我是初学者所以请耐心等待我的愚蠢问题。我知道这已经得到了很多解决(例如here,here和here),但它似乎对我的情况不起作用。我的浏览器在我的htaccess文件中显示“重定向循环”错误:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Trying to redirect to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>
我知道在重定向到https之前,这可能与RewriteCond
和RewriteRule
有关,但我真的不知道我在这里做什么而且我不知道知道要改变什么。
更新
可能有用的更多信息:
https://my.site.com
时,它会加载正常。我正在尝试重定向的应用程序驻留在另一个也有.htaccess文件的应用程序的子文件夹中。这是该应用程序的代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteEngine On
</IfModule>
这就是萤火虫所说的:
答案 0 :(得分:1)
更改规则的顺序,并在其他内部重写规则之前保留301规则:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Trying to redirect to https
RewriteCond %{HTTPS} off
RewriteCond %{SERVER_PORT} !=443
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>