请帮忙。你能告诉我这是执行以下重写的正确代码吗?我无法像我希望的那样测试这个特定的更改。
该公司在单个 Apache 实例中拥有四个域。
我只想影响一个 - test.example.com。
我需要此块来执行以下操作:
- 如果主机是 test.example.com,则对 / 的任何调用都需要转到 /admin/index.php
- 如果主机是 test.example.com,则对 http 的任何调用都需要转到 https
重写引擎开启 重写库 / RewriteCond %{HTTP_HOST} !^test\.example\.com 重写规则 ^/admin/index\.php$ - [L] RewriteCond %{HTTP_HOST} !^test\.example\.com RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d 重写规则 . /admin/index.php [L] RewriteCond %{HTTP_HOST} !^test\.example\.com RewriteCond %{HTTPS} 关闭 重写规则 (.*) https://%{HTTP_HOST}%{REQUEST_URI}
非常感谢,林恩
更新:
这样的事情怎么样?
RewriteCond %{HTTP_HOST} !^test\.lifestylepubs\.com RewriteCond %{HTTPS} 关闭 重写规则 (.*) https://%{HTTP_HOST}$1 重写规则 ^/$ /admin/index.php
答案1
如果您的 Apache 服务器为 4 个域提供服务,那么我会假设每个域都在其自己的虚拟主机中。如果不是,这是我要修复的第一件事。
然后,您可以将重写规则放入适当的 vhost 配置中,而不必担心太多。
否则你的重写规则只需要:
RewriteCond %{SERVER_NAME} =test.example.com
RewriteRule ^/$ /admin/index.php [L]
RewriteCond %{SERVER_NAME} =test.example.com
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}$1