html站点根目录怎么改,通过重定向把子目录设置为网站根目录
摘要:如果想在一个项目内对于不同的文件夹使用不同的域名来访问,我们需要把这些文件夹单独设置成根目录并绑定域名,但对于虚拟服务器用户来说,这并不容易实现,因为一般的虚拟服务器是没有这样的功能的,但我们可以通过一些配置文件来实现。那么本文就来分享下apache虚拟服务器实现把子目录设置为根目录。
以前也写过一篇关于把子目录设置成网站根目录的文章,不过那个方法并不完善。前不久做微信公众号的开发又重新研究了一下域名的重定向,总算找到了一种完善的把子目录设置成功根目录的方法。
在分享把子目录设置成目录设置成根目录的方法前,先来简单的介绍下重定向,重定向分为内部重定向和外部重定向。
外部重定,比如现在在浏览器访问 A 链接,当页面完全加载完成后,浏览器的地址栏显示的是 B 链接,例如 我们访问 test.com ,但最后浏览器的地址栏显示的是 www.test.com 。这就是外部重定向。
内部重定向,最长见的就是伪静态。当我们访问一个伪静态链接的时候,会在服务器内部解析,然后根据内部规则把内容展现出来,但浏览器的 访问链接始终都没有变。伪静态 的页面内容实际上是动态内容,因为在服务器按照链接来查找是找不到对应的静态页面的。
介绍完重定向,下面就来实现如何把子目录设置成根目录
主目录对应的域名:www.test.com,主目录下有个index.html 文件,内容为 index index
主目录下的子目录 bj:最终目的实现访问 www.test.com/bj/ 变成 bj.test.com,而且显示的是子目录 bj 下对应的内容,子目录下有个index.html 文件,内容为 bj/index
服务器环境:Apache2.4,开启了rewrite模块(一般的apache虚拟服务器都会默认开启这个模块)
域名解析绑定:www.test.com 和 bj.test.com 都绑定在主目录上
apache的虚拟服务器的重定向都是通过 .htaccess 文件来实现的,所以我们需要在主目录和 bj 目录下都放置一个.htaccess 配置文件。
在设置前我们先来访问下两个域名:
http://bj.test.com/index.html (显示的是主目录index.html文件内容)
http://www.test.com/bj/index.html (显示的是bj目录下的index.html文件内容,但url 不是我们希望看到的)
主目录下的 .htaccess 文件配置内容RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^bj.test.com$ [NC]
RewriteRule ^(.*)$ bj/$1 [QSA,L]
RewriteEngine On : 开启 url 重写
RewriteBase :基准路径,默认 “/” 即可,表示当前目录下;
RewriteCond :重写条件;
%{HTTP_HOST} ^bj.test.com$ [NC] :重写条件内容,%{HTTP_HOST} 这个是系统默认变量,表示当前访问的域名,[NC] 表示忽略大小写,^bj.test.com$ 正则匹配条件
这一句的完整意思就是 如果当前访问的域名是 bj.test.com 就继续进行下一句匹配;
%{REQUEST_URI} :当前访问的路径,不包括域名,相当于 php中系统变量 $_SERVER['REQUEST_URI'],
RewriteCond %{REQUEST_URI} !^/bj/ 这句的意思是当前访问的路径不是以 /bj/ 开头
RewriteRule ^(.*)$ bj/$1 [QSA,L]: url 重写规则,这里用的是内部重定向 ;
QSA:保证url中的参数不分布被截断,如果不加这个,在url重写时,url中的特殊符号后的参数部分会被截断
下面用个例子具体分析,例如:http://bj.test.com/index.html
1、域名是 bj.test.com, 满足条件 RewriteCond %{HTTP_HOST} ^bj.test.com$ [NC]
2、REQUEST_URI 的值是 /index.html,不是以 /bj 开头,满足条件 RewriteCond %{REQUEST_URI} !^/bj/
3、此时 index.html 就是url重写规则中的 .* ,规则中的 $1 对应的是 .* 因此,此时的重写url规则是 RewriteRule index.html bj/index.html,基准目录是当前目录,所以 bj/index.html 会在当前目录下找bj目录下的 index.html 文件
而 bj/index.html文件的内容为:bj/index
所以在浏览器访问 http://bj.test.com/index.html 时,浏览器显示的内容应该是 bj/index,如下图所示:内容变成了 bj/index ,说明访问的是bj目录下的内容,bj.test.com域名的访问已经达到我们要的效果了。
接下来配置bj目录下的 .htaccess 文件RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.test.com$ [NC]
RewriteCond %{REQUEST_URI} ^/bj/
RewriteRule ^(.*)$ http://bj.test.com/$1 [QSA,R=301]
bj子目录的.htaccess的配置就不详细解释了,这里只说一点,如果用 www.test.com 去访问bj子目录,我们希望在浏览器看到的是 bj.test.com ,而不是 www.test.com ,很明显url变了,因此子目录要配置的是外部重定向: [R=301] 表示301从定向,如果不加 [R=301],因为url规则总用了完整的url 所以会默认302外部重定向,而302重定向对seo是不友好的,所以这里设置成301重定向。
下面来看看访问 http://www.test.com/bj/index.html 的实际效果:(从图中可以看到,访问路径中的域名变成了bj.test.com,而页面显示的内容 bj/index 也是子目录bj下的index,html文件的内)
子目录设置根目录就完成了,是不很简单,很好理解。而且把这个理解透了,不仅可以把主域名下的一级子目录设置成根目录,甚至还能对更深层的子目录设置成根目录。
html站点根目录怎么改,通过重定向把子目录设置为网站根目录相关推荐
- php获取网站根目录
php获取网站根目录方法一: <?php define("WWWROOT",str_ireplace(str_replace("/","\\&q ...
- Apache配置网站根目录
Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. 在安装 Apache 时,系统会给定一 ...
- php获取网址根目录,php获取当前目录_php获得网站根目录的几个方法
摘要 腾兴网为您分享:php获得网站根目录的几个方法,作业大师,信和财富,武魂传说,省呗等软件知识,以及日语同声翻译app,x-file,阿部高和表情包,营口人社,多彩云,爱奇艺hd版,亲朋游戏,rf ...
- 修改web服务器的网站主目录,Tomcat中更改网站根目录和默认页的配置方法
1.tomcat原来的默认根目录是http://localhost:8080,如果想修改访问的根目录,可以这样: 找到tomcat的server.xml(在conf目录下),找到: . 代码如下: u ...
- 怎样快速找到网站根目录
什么是根目录? 什么是根目录?根目录,或根文件夹,是顶层目录一个的文件系统.目录结构可以直观地表示为上下颠倒的"树",因此术语" root "代表顶层.所有其它 ...
- 织梦根目录生成php文件,织梦dedecms内置网站地图生成根目录路径
织梦dedecms 后台生成下面"更新网站地图"以及"更新RSS文件"默认保存在data目录下, 之前我帮客户搭建的织梦dedecms站点在robots.txt ...
- 更改Apache默认网站根目录
Apache服务器网站根目录配置是个比较基本的操作,之前经常用,现在记一下笔记 打开Apache的配置文件,一般在Apache安装目录下的conf/httpd.conf配置文件中修改, 找到 Docu ...
- Amh/Nginx更改网站根目录
2019独角兽企业重金招聘Python工程师标准>>> 网站根目录是由Nginx的配置文件指定的.更改Amh虚拟主机的网站根目录,需要手动修改/usr/local/nginx/con ...
- nginx文件服务器修改根目录,nginx修改配置文件更改网站根目录无效?
CentOS6.4 64位,nginx是1.10.1,只需要显示html静态页面 原网站根目录是/usr/local/nginx/html 我需要改成/srv/www/,以下为nginx.conf文件 ...
- thinkphp5/phpstudy分析入口文件index.php及localhost和配置域名访问网站根目录www
文章目录 1.thinkphp5入口文件简介 2.访问网站根目录www (1)localhost访问网站根目录www (2)配置域名访问网站根目录www 第一步:点击站点域名管理 第二步:站点域名设置 ...
最新文章
- Highchart插件下载与安装
- java throw抛出异常
- 做算法,为什么建议你一定要学懂C++?
- 25 WM配置-策略-入库策略5-定义托盘策略P(Pallet Strategy)
- linux sudo 命令权限,linux su和sudo命令的区别
- 2014蓝桥杯C++B:啤酒和饮料;切面条(思维分析)
- 电脑指定区域旋转_诸城全自动旋转门批发,医用病房门,请看
- R语言之数据分析高级方法「时间序列」
- PXE+kickstart——实现网络批量装机
- 【C++】【Opencv】【vs2015】环境配置
- 阿里云域名注册+服务器购买+备案教程(图文教程)
- 与卡耐基梅隆大学博士交流笔记
- 6 款免费网络延迟测试工具-从事网络行业必备
- 如何彻底的删除hao123_hao123太流氓!怎么从电脑彻底清除?
- Python 实现 T00ls 自动签到脚本(邮件+钉钉通知)
- 深受启发的21个故事
- cmd命令创建文件文件夹
- 面试了10几家软件公司测试岗位,做的面试题大盘点,重点大合集
- 【SystemVerilog基础】关于随机化约束solve...before的深入探究
- 【算法】Sky Map