我总是使用下面的规则来管理 URL:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./urlredirect.php
通过这个,我可以轻松地用 php 检查用户正在尝试访问哪个页面。
现在我有一个网站,要求所有页面都使用 https。以下是基本解决方案:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
我现在的问题是无法同时运行两者。我对 mod-rewrite 和正则表达式了解甚少。
任何帮助将不胜感激。
答案1
来自 Apache 文档:HTTP 到 HTTPS https://wiki.apache.org/httpd/RewriteHTTPToHTTPS
因此,您需要先确定条件,然后再确定每个条件的规则。
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./urlredirect.php
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}