cetnos apace 多网站配置问题

2015-01-22 14:56:15 +08:00
 kingwrcy
vps上有2个网站,一个是全站ssl,一个是普通的,apache配置文件:

<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName def.net
ServerAdmin def@gmail.com
ErrorLog "/var/log/error_log_1"
TransferLog "/var/log/access_log_2"

#Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /root/ssl/xx.crt
SSLCertificateKeyFile /root/ssl/xx.key
SSLCertificateChainFile /root/data/xx.pem
</VirtualHost>


<VirtualHost *:80>
DocumentRoot "/var/www/xxx"
ServerName abc.com
ServerAdmin abc@gmail.com
ErrorLog "/var/log/error_log_3"
TransferLog "/var/log/access_log_4"
</VirtualHost>

因为指定了443到def.net,80到abc.com,导致访问错误

直接访问def.net到了abc.com,加上https://def.net是正常的.
访问abc.com自动跳到了https://def.net

def网站的 /var/www/html/.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php\?p=$1 [QSA,L]
RewriteEngine On
RewriteCond %{HTTPS} !on [NC]
RewriteCond %{HTTP_USER_AGENT} !(baiduspider|soso|bing|sogou|yahoo|sohu-search|yodao|robozilla|msnbot|msie|feedburner) [NC]
RewriteRule (.*) https://def.net%{REQUEST_URI} [R=301,NC,L]
</IfModule>

网上copy来的

要实现的是
1. 访问def.net,http://def.net,https://def.net都跳到https://def.net
2. 访问abc.com能正常访问对应的网站内容

求指导,网上搜索一圈没遇到相同的问题.
2440 次点击
所在节点    问与答
9 条回复
bilok
2015-01-22 15:06:01 +08:00
用 Nginx 不是很懂 Apache
我只是想提醒下楼主
下次打标题的时候可以慢一点
kingwrcy
2015-01-22 15:09:29 +08:00


打错了两个单词,真是手误啊啊,没脸见人了
Doubear
2015-01-22 15:26:02 +08:00
好复杂啊,你这样就配置好了么?我一直用的一键包,好像还要配置啥的吧?你可以再增加一个80端口的虚拟主机绑定域名def,然后把伪静态规则改改,判断是否https协议的放前面。这样你http访问def的域名时阿帕奇就会执行该域名80端口下的伪静态,然后伪静态检查不是https访问,于是就跳转到https页面
ryd994
2015-01-22 15:41:36 +08:00
加一个def.net的virtualhost在80上,跳转到https
kingwrcy
2015-01-22 16:54:11 +08:00
@ryd994 好像没有效果,网上也没搜到同时有ssl和非ssl的
0x1e240
2015-01-22 19:30:57 +08:00
http是80端口,如3L所说,def加80端口301到HTTPS
0x1e240
2015-01-22 19:33:34 +08:00
你的def没配80端口,htaccess怎么跳
luo362722353
2015-01-22 20:10:07 +08:00
def添加80配置…不然直接去了abc.com
ryd994
2015-01-23 20:07:10 +08:00
@kingwrcy 你要的不是同时有http和https
而是http虚拟多站+其中一个跳转+https站
所以80上放两个站abc和def,def单纯作跳转,abc正常服务
443上放def提供服务
因此也不要写到htaccess里,而是在httpd.conf里,写3个站

访问的时候记得用域名访问,用IP的话是不能虚拟多站的,这里再提一下

顺带一提,443上其实也可以放多站,这叫sni

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/164490

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX