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