Apache服务器通过htaccess让域名指向二级目录

首先要检查服务器apache是否开启mod_rewrite 

运行phpinfo(),查看apache2handler里的Loaded Modules是否有mod_rewrite ,Linux服务器是默认开启的

如果没有开启的话,在apache的配置文件httpd.conf里找到#LoadModule rewrite_module modules/mod_rewrite.so  把#去掉

 然后开始检测apache是否支持 ".htaccess"  

在httpd.conf里

1 <Directory>
2 
3     Options Indexes FollowSymLinks
4 
5     AllowOverride none
6 
7 </Directory>

把none改成All

先让解析一个域名

我让download.xxx.cn   指向我主目录下的download目录

然后创建一个.htaccess的文件

内容如下:

1 <IfModule mod_rewrite.c>  
2     RewriteEngine On  
3     RewriteBase /  
4     # download.starryheaven.cn 到子目录music  
5     RewriteCond %{HTTP_HOST} ^download.starryheaven.cn$ [NC]  
6     RewriteCond %{REQUEST_URI} !^/download/  
7     RewriteRule ^(.*)$ download/$1?Rewrite [L,QSA]  
8     #可以绑定多个 只需重复上三行代码并更改一下域名、目录名 就好了  
9 </IfModule>  

不过这样还可以通过 主域名/download 访问,要想禁止这种的话就需要添加/download下在加一个.htaccess文件,内容如下:

 1 <IfModule mod_rewrite.c>  
 2     RewriteEngine On  
 3     RewriteBase /  
 4     #只许绑定的域名访问  
 5     RewriteCond %{HTTP_HOST} !^download.starryheaven.cn$ [NC]  
 6     RewriteRule (.*) http://download.starryheaven.cn/$1 [L,R=301]  
 7     #对绑定目录下与 同名的目录的处理  
 8     RewriteCond %{REQUEST_URI} ^/download/ [NC]  
 9     RewriteCond %{QUERY_STRING} !^(.*)?Rewrite  
10     RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA]  
11 </IfModule>  

最后重启下apache就行了:

service httpd restart
原文地址:https://www.cnblogs.com/xingkongyihao/p/8278837.html