我有一个内部域:cloud.flint.lo
我想实现以下目标:
If URL=http://cloud.filnt.lo
Redirect to: https://cloud.flint.lo:5001/sub
If URL=https://cloud.flint.lo
Redirect to: https://cloud.flint.lo:5001
我在 .htaccess 中写了这个,但只有第一个场景有效:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^5001$
RewriteRule ^(.*)$ https://%{HTTP_HOST}:5001/$1 [L,R=301]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}:5001/sub [L,R=301]
我还尝试使用“REQUEST_URI”来匹配 5001 端口,但也没有用。
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^.*\:5001
RewriteRule ^(.*)$ https://%{SERVER_NAME}:5001/sub [L,R=301]
在这里使用
mod_rewrite
似乎有点矫枉过正。您可能需要考虑改用Redirect ( 的一部分mod_alias
)。前任。虚拟主机 1 (HTTP)
前任。虚拟主机 2 (HTTPS)
笔记
任何 HTTPS 虚拟主机都可能需要一些额外的标准 SSL 语句(但这完全取决于您的配置)。
示例
Redirect
语句当然可以只是您的主要 Apache 配置文件的一部分(特别是httpd-ssl.conf
对于第二个示例)。Redirect
用于代替DocumentRoot
。使用 Apache mod_rewrite
或者,如果您觉得 Apache
mod_rewrite
更适合您的用例,您可以尝试以下方法:前任。HTTP 主机
前任。HTTPS 主机