使用重写规则时.htaccess重定向循环

时间:2014-10-22 13:45:18

标签: apache .htaccess mod-rewrite

我正在使用此代码强制https并将所有请求重定向到index.html,但代码导致Too Many Redirects

RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://example.com%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]

我也试过

RewriteRule ^(.*) https://example.com/$1 [R,L]

但它会生成example.com/index.html/page/about

这样的网址

1 个答案:

答案 0 :(得分:0)

您的index.html可能为空(0码),%{REQUEST_FILENAME} -s无法识别。

而不是使用%{REQUEST_FILENAME} -f检查您的网址是否是真实文件,无论其大小如何:

RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://example.com%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*) /index.html [NC,L]