【发布时间】:2017-10-23 09:13:31
【问题描述】:
我最近将所有流量重定向到 https,但我只想将我的子域保留在 http 上。请帮我解决这个问题。
这是我的重写规则
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
这是我的虚拟主机代码
<VirtualHost *:80>
ServerAdmin test@example.com
ServerName staging.example.com
ServerAlias staging.example.com
SetEnv ENVIRONMENT staging
DocumentRoot /var/www/staging/
ErrorLog /var/log/apache2/example_staging_error.log
CustomLog /var/log/apache2/example_staging_access.log combined
<Directory /var/www/staging>
AllowOverride All
Include /etc/apache2/sites-available/example_dir_rules.conf
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin test@example.com
ServerName example.com
ServerAlias example.com
SetEnv ENVIRONMENT production
DocumentRoot /var/www/production/
ErrorLog /var/log/apache2/example_production_error.log
CustomLog /var/log/apache2/example_production_access.log combined
<Directory /var/www/production>
Include /etc/apache2/sites-available/example_dir_rules.conf
</Directory>
</VirtualHost>
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
#Listen 443
<VirtualHost *:443>
SSLEngine on
SSLHonorCipherOrder On
-------------ssl code----------
ServerName example.com
-------------ssl code----------
ServerAdmin test@example.com
ServerName example.com
ServerAlias example.com
SetEnv ENVIRONMENT production
DocumentRoot /var/www/production/
ErrorLog /var/log/apache2/example_ssl_error.log
CustomLog /var/log/apache2/example_ssl_access.log combined
<Directory /var/www/production>
Include /etc/apache2/sites-available/example_dir_rules.conf
</Directory>
</VirtualHost>
请帮我解决这个问题。提前致谢。
【问题讨论】:
-
“这是我的重写规则” - 你的“重写规则”在哪里?由于您似乎可以访问您的服务器配置,那么您应该在您的虚拟主机中执行此重定向 - 这将更有效并且可能更容易避免您的子域。哪些子域?或者更确切地说,您希望为哪个主机重定向到 HTTPS?
-
我已经在 /etc/apache2/sites-available/example_dir_rules.conf 文件中编写了重写规则,并且我已将此文件包含在主机文件中
标签: .htaccess http redirect https