如何将主机名放入重写规则

如何将主机名放入重写规则

我们设置了一些子域,我想简化一些 Apache 配置 - 特别是因为这些特定的子域是易变的。无论如何,我正在尝试获取包含主机的重写规则。

到目前为止,我已经得到:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(.*).net.au$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L]

这是基于https://stackoverflow.com/questions/3634101/url-rewriting-for-different-protocols-in-htaccesshttp://httpd.apache.org/docs/2.4/rewrite/vhosts.html

但是,第一个条件中的模式没有写入重写地址,最终我被发送到 .net.au/wherever(不允许我在前面使用 https 发布)——我错过了什么吗?

在 Ubuntu 14.04 上运行 apache 2.4

答案1

Ladadadada 建议的简单案例是当请求主机和目标主机之间的域名相同时起作用:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=302,L]

然而,额外的困难是我还需要http:// sub-domain.local重定向到http:// sub-domain.net.au- 因此使用%{HTTP_HOST}是不够的。

我再次看了一些例子,并意识到%1反向引用似乎仅适用于RewriteRule之前紧接着的RewriteCond。

我重新排列了顺序:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(.*)(.local|.net.au)$
RewriteRule ^(.*)$ https://%1.net.au$1 [R=302,L]

重定向效果很好

相关内容