mod_rewrite HTTPS和单点输入

时间:2015-08-31 23:13:48

标签: apache mod-rewrite

我现在已经和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.

1 个答案:

答案 0 :(得分:0)

原来,密钥位于负载均衡器后面的#34;

因为http总是关闭,所以我发布的最后一个配置,即#34;正确的#34;,导致循环。

我把它改为:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

一切正常。