网站首页 > 技术教程 正文
#可直接看最后的解决方案(找前辈网发布并测试通过)
场景:
比如访问xxx.abc.com,则自动获取www.abc.com/xxx相关页面
且需要不重启apache,需要多少二级域名,自动生效。
网上参考方案:
参考1:
https://www.oschina.net/question/149143_2274346(不生效)
主要代码:
RewriteCond %{HTTP_HOST} !^www.xxxxxx.com$ RewriteCond %{HTTP_HOST} !^m.xxxxxx.com$ RewriteCond %{HTTP_HOST} ^(.*).xxxxxx.com$ RewriteCond %{REQUEST_URI} !^/%1/ RewriteRule ^(.*)?$ /%1/$1
参考2:
https://bbs.csdn.net/topics/350153809(不生效)
主要代码:
a、
rewriteengine on rewritecond %{HTTP_HOST} [^.]+\.域名\.com$ rewriterule ^(.+)$ %{HTTP_HOST}$1 [C] rewriterule ^([^.]+)\.域名\.com(.*)$ /$1$2
b、
RewriteEngine On RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\.域名\.com$ RewriteCond %{REQUEST_URI} !^/[a-zA-Z0-9]/ RewriteRule ^(.*)$ /%1/$1 [L]
c、
RewriteCond %{HTTP_HOST} ^www.xxx.com:8080$ RewriteRule ^/?$ /index.html RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9]+\.xxx.com:8080$ RewriteRule ^/?$ /%{HTTP_HOST} RewriteRule ^/([a-zA-Z0-9]+)\.xxx\.com:8080/?$ /$1/index.jsp RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9]+\.xxx.com:8080/^[a-zA-Z0-9]+\.jsp$ RewriteRule ^/?$ /%{HTTP_HOST} RewriteRule ^/([a-zA-Z0-9]+)\.xxx\.com:8080/^(.*)?$ /$1/$3\.jsp [L]
apache官方文档:
https://httpd.apache.org/docs/2.4/rewrite/vhosts.html(看不太懂,测试也并不可行)
Setup automatic per-folder subdomains on your local linux based computer,经过测试,完全可行。但是要额外启用vhost_alias模块(看不太懂,没测试)
Redirecting subdomains to directories in apache,这应该是最接近我本意的解决方案了,但是没搞成功,但是看起来挺靠谱的(看不太懂,没测试)
最后给出真正的方案:
准备:
本方案基于centos 6.4
1、host文件夹->www.xxx.cn
2、abc文件夹->abc.host.xxx.cn
具体方案:
1、你需要做泛域名解析
原因:没有泛域名解析,那么你搞的二级域名根本就没法在公网上访问。
方法:在域名解析出,添加*指向你的主机
2、你需要做别名(泛)
原因:你不在apache上做别名,那么apache根本就得不到你的访问请求,或者说对于你的二级域名访问根本无法定位文件夹。
方法:直接贴代码
<VirtualHost *:80> DocumentRoot "/usr/www/host" ServerAlias *.host.xxx.cn <Directory "/usr/www/host"> AllowOverride all Order allow,deny allow from all </Directory> </VirtualHost>
3、打开httpd.conf的别名、重写等模块,开启AllowOverride all
上边做好了,需要重启httpd,centos 6.4的重启方法是service httpd restart
4、重写规则
这儿网上给了一大堆方案,实际能用的,至少在百度上找前辈网没发现。
代码如下:
RewriteEngine On #先适配域名是否有XXX.host.xxx.cn这种形态 RewriteCond %{HTTP_HOST} ([a-z]{3,20})\.host\.xxx\.cn #再把适配完域名后边的部分给适配出来 RewriteCond %{REQUEST_URI} !/([a-z]{3,20})/(.*) #找前辈网提醒你,%1指的是第三行([a-z0-9]{3,20})中的内容 #$1指的是rule中(.*),中的所有 #整个的意思 RewriteRule ^(.*)$ /$1/%1
保存为.htaccess放在host文件夹下
最终效果:
访问abc.host.xxx.cn会直接调用 abc.host.xxx.cn/abc下的
需要解决的问题:
1、禁止用户用子目录方式访问,访问则跳转到二级域名
2、其他
我是怎么搞出来的
作为找前辈的一名老师,当然是需要站在一堆复制粘贴博主的肩膀上,想出来的。
首先,想找到写好的方案,基本都出错有问题。
接着,查到泛域名解析
接着,查到别名
接着,自己分析重写规则
最后,分析别人的重写规则,写出这个规则
总结:
难道你们抄代码的时候,真的测试通过了吗?
而你们整出来的,真就那么懒不写个教程吗?
写了教程,难道百度真的是瞎吗?
其他问题请下头评论吧
- 上一篇: 带你轻松玩转linux
- 下一篇: raksmart洛杉矶共享主机怎么设置
猜你喜欢
- 2025-05-15 raksmart洛杉矶共享主机怎么设置
- 2025-05-15 带你轻松玩转linux
- 2025-05-15 Java面试题及答案最全总结(2025版持续更新)
- 2025-05-15 Linux下玩转nginx系列(三)---nginx日志配置文件说明
- 2025-05-15 用WordPress建站哪些插件会拖慢速度影响排名?
- 2025-05-15 Java面试题及答案总结(2025版持续更新)
- 2025-05-15 nginx基础知识之rewrite正则表达式
- 2025-05-15 难道只有我懂Nginx/OpenResty详解,Nginx的rewrite模块指令?
- 2025-05-15 nginx rewrite规则详解
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)