可搜索,可注册,可登录,致敬逗比大佬!尽在救援版逗比根据地 dbgjd.com
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程

域名像访问根目录一样访问子目录

News Toyo+ 206℃ 0评论

用独立域名直接访问子目录有多种情况:

  1. 站大了,子目录要独立,子目录绑定独立域名做独立访问。很简单,不讲。
  2. 没钱,一个虚拟空间下想多搞几个网站, » 同一虚拟空间建立多个网站的方法:不用加钱,不用绑定附加域
  3. 网站子目录太多,管理不方便,又不想层级太多不利于seo优化,把所有子目录,并列为同一级别子目录。但是,都用同一个独立域名访问。

今天讲第3个,这样管理文件夹的时候很清晰,而且每个子目录文件,虽然放在子目录,但是却像放在根目录一样访问。

根目录

/

/index0.php

/bbs/

/bbs/index1.php

/blog/

/blog/index2.php

/wiki/

/wiki/index3.php

……

解决方案二是在网站根目录新建的.htaccess文件中加入以下语句:

1
2
3
4
5
6
7
8
9
10
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$
RewriteCond %{REQUEST_URI} !^/目录名/
# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /目录名/$1
# 目录名/ 后面是首页文件index.php, index.html……
RewriteCond %{HTTP_HOST} ^(www.)?要绑定的域名$
RewriteRule ^(/)?$ 目录名/index.php [L]

详解:

.htaccess文件内容
RewriteEngine on
# 把 dbgjd.com 改为你要绑定的域名.
RewriteCond %{HTTP_HOST} ^(www.)?dbgjd.com$

# 把 subfolder 改为要绑定的目录.
RewriteCond %{REQUEST_URI} !^/subfolder/

# 不要改以下两行.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 把 dev 改为要绑定的目录.
RewriteRule ^(.*)$ /dev/$1

# 把 dbgjd.com 改为你要绑定的域名
# 把 dev 改为要绑定的目录.
# dev/ 后面是首页文件index.php, index.html
RewriteCond %{HTTP_HOST} ^(www.)?dbgjd.com$
RewriteRule ^(/)?$ dev/index.php [L]

———————–

这些是绑定一个子目录的整套语句,如需绑定多个子目录,可以重复添加以上整套语句。

第一步,根目录下增加 .htaccess,

根目录

/

/.htaccess

/index0.php

.htaccess内容为:

# 实现用域名dbgjd.com直接访问子目录/blog/,首页显示bbs首页

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?dbgjd.com$

RewriteCond %{REQUEST_URI} !^/blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /blog/$1
RewriteCond %{HTTP_HOST} ^(www.)?dbgjd.com$
RewriteRule ^(/)?$ bbs/index.php [L]
</IfModule>

# 同时实现用域名dbgjd.com直接访问子目录/bbs/,首页显示bbs首页

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?dbgjd.com$

RewriteCond %{REQUEST_URI} !^/bbs/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /bbs/$1
RewriteCond %{HTTP_HOST} ^(www.)?dbgjd.com$
RewriteRule ^(/)?$ bbs/index.php [L]
</IfModule>

# 同时实现用域名dbgjd.com直接访问子目录/wiki/,首页显示bbs首页……

……

第二步,修改独立域名所要打开的域名的首页。

就在RewriteRule ^(/)?$ bbs/index.php [L] 这里修改。

第三步,根目录下如果原有现在又增加 .htaccess的话,得说下合并问题。

因为子目录用独立域名访问的,所以路径中不要加子目录的路径。比如不是

RedirectMatch 301 ^/archives/(.+)$ /$1

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

而是

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

注意事项:

编写Rewrite配置的时候,在http.conf文件里面和在.htaccess文件里面是有区别的,需要注意路径问题,使用.htaccess是以.htaccess文件所在的目录为起始目录,而在http.conf中编写配置是,一定要加上文档的根目录,如“/”、“{DOCUMENT_ROOT}”等…

附录:

RewriteCond 重写规则执行条件:
语法: RewriteCond TestString CondPattern

生效域: server config, virtual host, directory, .htaccess

特别的上面的 TestString, 可提供反向引用. 引用模式为: %N 其中N为(0 <= N <=9), 引用当前若干RewriteCond条件中最后符合的条件中的分组成分, 也就是括号里的内容.不过用到的不多. 反向应用多在RewriteRule里常用.

RewriteCond 语法中的 TestStrng 为要被检查的内容, CondPattern 是进行匹配的规则, 它是一个兼容Perl风格的正则表达式和一些其他的特有字符属性. 这里介绍一下.

第一个: ! (感叹号) 表示否的意思. 比如一个条件: 判断访问此页面的上一页URL是否包含 sex 字符的话可以用这样: RewriteCond %{HTTP_REFERER} !(sex)

第二个: < 就是小于的意思, TestString < CondPattern.

第三个: > 就是大于于的意思, TestString < CondPattern.

第四个: = 相等的意思. <, >, = 三个和通常程序语言使用的 <, >, = 功能类似.

第五个: -d 是否是一个目录. 判断TestString是否不是一个目录可以这样: !-d

第六个: -f 是否是一个文件. 判断TestString是否不是一个文件可以这样: !-f

第七个: -s 是否是一个正常的有大小的文件. 判断TestString是否不是一个正常的有大小的文件可以这样: !-s

第八个: -l 是否是一个快捷方式文件. 判断TestString是否不是一个快捷方式文件可以这样: !-l

第九个: -x 是否是一个文件并且又执行权限. 判断TestString是否不是一个文件并且又执行权限可以这样: !-x

第十个: -F 检查TestString是否是一个合法的文件,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能。

第十一个: -U 检查TestString是否是一个合法的URL,而且通过服务器范围内的当前设置的访问控制进行访问。这个检查是通过一个内部subrequest完成的, 因此需要小心使用这个功能以降低服务器的性能.

转载请注明:逗比根据地 » 域名像访问根目录一样访问子目录

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址