请问设置规则让apache实现子域名“自动”绑定子目录

fictioner 2010-11-10 11:26:25
为避免麻烦,首先说明一点,排除所谓域名DNS设置问题,只涉及本地服务器配置。

举例说明:

目前我有“1.com”这个域名,已经做了泛解析到自己的服务器。
我想实现:
bj.1.com 自动绑定到 1.com/bj 目录
shanghai.1.com 自动绑定到 1.com/shanghai 目录
wuhan.1.com 自动绑定到 1.com/wuhan 目录
。。。 。。。

依次类推,个数不限,“自动”绑定子目录。

请问如何实现呢?

如果能实现,那“自动”绑定三级或多级目录也可以实现吧?当然规则应该是唯一的,要么子目录,要么三级,要么四级。。。

目前找到了“Nginx子域名自动绑定子目录”,链接为:http://www.zealv.org/2010/05/24/68

但目前我对配置Nginx不熟悉,希望可以用apache或者IIS实现。
...全文
1133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小米盖浇饭 2012-04-28
  • 打赏
  • 举报
回复
我想把www.xxx.com/test/abc.jsp重定向为test.xxx.com/abc.jsp.规则该如何写,我现在的规则如下:

RewriteCond %{HTTP_HOST} ^www.xxx.com:8080$
RewriteRule ^/?$ /index.html
RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9]+\.xxx.com:8080$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-zA-Z0-9]+)\.xxx\.com:8080/?$ /$1/index.jsp
RewriteCond %{HTTP_HOST} ^[a-zA-Z0-9]+\.xxx.com:8080/^[a-zA-Z0-9]+\.jsp$
RewriteRule ^/?$ /%{HTTP_HOST}
RewriteRule ^/([a-zA-Z0-9]+)\.xxx\.com:8080/^(.*)?$ /$1/$3\.jsp [L]


fictioner 2010-12-10
  • 打赏
  • 举报
回复
用了楼上的规则,的确是有些能访问,有些提示“Internal Server Error”。
dz818 2010-12-09
  • 打赏
  • 举报
回复
上面这个就是有个问题,关系到权限的问题,我有些网站能访问,有些不行。
dz818 2010-12-09
  • 打赏
  • 举报
回复
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([a-zA-Z0-9]+)\.域名\.com$
RewriteCond %{REQUEST_URI} !^/[a-zA-Z0-9]/
RewriteRule ^(.*)$ /%1/$1 [L]

你试试这个看看
dz818 2010-12-09
  • 打赏
  • 举报
回复
我也在找这个答案啊,貌似也无效
fictioner 2010-12-09
  • 打赏
  • 举报
回复
抱歉这么久才回,楼上的文中最下面“方法二”是我想要的,不过经过测试无效,不论是在主配置文件还是.htaccess文件中设置都无效!
我是在window系统下。
十一文 2010-11-10
  • 打赏
  • 举报
回复

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
十一文 2010-11-10
  • 打赏
  • 举报
回复
用urlrewrite

24,924

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧