![如何编写多个 mod-rewrite 规则?](https://linux22.com/image/664945/%E5%A6%82%E4%BD%95%E7%BC%96%E5%86%99%E5%A4%9A%E4%B8%AA%20mod-rewrite%20%E8%A7%84%E5%88%99%EF%BC%9F.png)
我总是使用下面的规则来管理 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}