Apache解析域名到目录的方法

apache如何将一个域名自动定位到目录有两种解决办法。

首先,你得拥有一个有泛域名解析的顶级域名,例如:domain.com。
其次,在httpd.conf中打开mod_rewrite之后,在httpd.conf的最后,添加以下内容:

RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap vhost txt:/usr/local/etc/apache/vhost.map
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

其中的"/usr/local/etc/apache"是你的apache服务器配置文件所在路径,根据实际情况更改。
然后,在这个所在路径的目录下创建一个文件:vhost.map
内容为:

www.domain.com /usr/local/www/data-dist/domain
bbs.domain.com /usr/local/www/data-dist/bbs
anyname.domain.com /usr/local/www/data-dist/anyname

以上部分都是:"域名+空格+绝对路径"的形式。

最后,在你的网站根目录"/usr/local/www/data-dist"下,创建对应目录:domain、bbs、anyname等等,理论上可以无限。

这样,通过浏览器,访问www.domain.com时,实际上访问的就是"/usr/local/www/data-dist/domain"目录下的文件。

同理,访问bbs.domain.com 实际上访问的就是"/usr/local/www/data-dist/bbs"目录下的文件。

而且,你可以随时更改vhost.map来增加、删除、修改你的二级域名和所指向的实际路径,不用重启apache。

第一步:打开apache的配置文件httpd.conf,去掉下面代码前面的#号。

LoadModule rewrite_module modules/mod_rewrite.so

第二步:打配置文件尾部加上

RewriteEngine on
RewriteMap lowercase int:tolower
#定义映像文件
RewriteMap vhost txt:/apache/vhost/vhost.map
#处理变名
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
#这里做基于文件的重新映射
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1
RewriteCond %{REQUEST_URI} ^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/cgi-bin/$1

注意:vhost.map文件是域名和空间映像的文件,格式如下:

www.abc.com /vhostusr/www.abc.com
www.xyz.com /vhostuser/www.xyz.com
www.cccbbbb.net /vhostuser/www.ccbbbb.net

(你不会连/vhostuser/www.abc.com目录也没建吧,会报错的哟!)
第三步:保存配置文件,重启apache。在开设可绑定域名的空间时,只要在vhost.map文件里添加相应记录,并建立相应文件夹就OK了。

其实这个可以用php脚本来完成的,很简单的~~呵呵~~~

注意啊:php_admin_value open_basedir path这个选项要配好啊~~新手如果不懂的,就不要动这个了~

==============================================================================

方法二

rewriteengine on
rewritecond %{HTTP_HOST} [^.]+\.域名\.com$
rewriterule ^(.+)$ %{HTTP_HOST}$1 [C]
rewriterule ^([^.]+)\.域名\.com(.*)$ /$1$2

其他配置文件

接着在DNS中开设一个泛解析到对应的IP地址。
就可以实现下面的方案。

域名:domain.com
绝对路径:/home/domain.com/
www.domain.com 自动解析到 /home/domain.com/www/
abc.domain.com 自动解析到 /home/domain.com/abc/
等等子域名都可以自动解析到 /home/domains.com/对应子域名名称的文件夹
直接建立子域名名称的文件夹即可使用。不需重启apache

版权声明:
作者:小陈
链接:https://www.wolongju.com/archives/69
来源:卧龙居
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>