我现在已经和mod_rewrite战斗了一段时间了 - 我无法让它工作,所以如果文件不存在,它会重新定向到index.php" -redirection,正如大多数单点入口框架(如Slim,CI,Symfony2)所使用的那样,同时还将任何HTTP请求重定向到HTTPS。
它看起来像这样,但它允许HTTP:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
我试过了:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
这给了我一个重定向循环。
使用mod_rewrite执行此操作的正确方法是什么?我希望它首先将HTTP重定向到HTTPS,然后在以下请求中将所有不存在的内容重定向到index.php,但是提供任何功能。
我无法使用Redirect Virtual Host指令,因为服务器位于负载均衡器后面,只能侦听端口80.
答案 0 :(得分:0)
原来,密钥位于负载均衡器后面的#34;
因为http总是关闭,所以我发布的最后一个配置,即#34;正确的#34;,导致循环。
我把它改为:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
一切正常。