Sup*_*eer 16 apache subdomain redirect wildcard-subdomain
我使用以下代码将我的子域的所有http请求重定向到https.
<VirtualHost *:80>
ServerName subdomain.example.com
Redirect 302 / https://subdomain.example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
现在我的问题是如何为所有子域做到这一点.
例如,http:subdomain1.example.com应转到https:subdomain1.example.com,http:subdomain2.example.com应转到https:subdomain2.example.com
如何为所有子域执行此操作,而无需为所有子域创建一个虚拟主机
更新
我发现RedirectMatch采用正则表达式.有谁知道如何使用正则表达式?
arc*_*444 20
您可以将其添加到服务器的.conf文件中:
<VirtualHost *:80>
ServerName subdomain.example.com
ServerAlias *.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$
RewriteRule ^(.*)$ https://%1.example.com$1 [R=302,L]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
ServerAlias将允许vhost充当通配符,然后您可以从主机头中提取子域并将其包含在重写为https中
Tim*_*myG 19
这是对 .conf 文件的更简单的通用修改:
<VirtualHost *:80>
#...whatever you already have set up...
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
Mis*_*cha 11
正如RewriteHTTPToHTTPS的 Apache Wiki 条目所述,
使用 mod_rewrite 执行此操作不是推荐的行为。请参阅重定向SSL
强制 HTTP 到 HTTPS 重定向的虚拟主机配置 - 也适用于子域 - 是这样的:
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
<Location "/">
Redirect permanent "https://%{HTTP_HOST}%{REQUEST_URI}"
</Location>
</VirtualHost>
<VirtualHost *:443>
[...your vHost configuration...]
SSLEngine On
SSLCertificateFile /path/to/your/cert.pem
SSLCertificateKeyFile /path/to/your/privkey.pem
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
说明: Redirect 和 RedirectMatch 通常没有{HTTP_HOST}来自 Mod_Rewrite的变量(如),但如果您使用<Location >这些变量,则会分配这些变量。
Redirect permanent(替代Redirect 301:)将使用 http 301 代码重定向,因为
301 重定向被认为是将用户从 HTTP 升级到 HTTPS的最佳实践。
注意:此配置基于子域的通配符证书。
| 归档时间: |
|
| 查看次数: |
12518 次 |
| 最近记录: |