Mod_rewite - 这些重写规则有效吗?

Mod_rewite - 这些重写规则有效吗?

请帮忙。你能告诉我这是执行以下重写的正确代码吗?我无法像我希望的那样测试这个特定的更改。

该公司在单个 Apache 实例中拥有四个域。

我只想影响一个 - test.example.com。

我需要此块来执行以下操作:

  1. 如果主机是 test.example.com,则对 / 的任何调用都需要转到 /admin/index.php
  2. 如果主机是 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

相关内容