利用.htaccess搭建无限子站点
来源:互联网 发布:软件系统上线实施方案 编辑:程序博客网 时间:2024/05/10 01:50
最近在做一个php商城项目,客户只提供一个虚拟主机,但是他希望每个注册用户都可以得到一个属于自己的
二级域名,通过访问这个二级域名,就可以看到自己的网站。
既然是虚拟主机,那httpd.conf 这个文件肯定是动不了的。于是我用.htaccess来重写url,做成一个伪二级域名
的系统。
首先,需要把你独立ip做一下解析,如:*.paodot.net指向到你的服务器,这样,无论你输入的二级域名是什么
。都同意访问到网站首页。如:test123.paodot.net.
然后,在你服务器的根目录下面建立文件.htaccess文件。重点在下面(汗!这里费了我好多时间,写出来,
免的让你们在浪费时间!)
在网上,有很多关于 .htaccess建立多站点的例子,如:
.htaccess文件内容如下:(以xrnic.cn域名为例)
RewriteEngine on
DirectoryIndex index.php index.html index.htm
#让www.xrnic.cn 访问根目录CMS
RewriteCond %{HTTP_HOST} ^www.xrnic.cn$
RewriteCond %{REQUEST_URI} !^/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1
RewriteCond %{HTTP_HOST} ^www.xrnic.cn$
RewriteRule ^(/)?$ /index.php [L]
#让home.xrnic.cn 访问home目录UcenterHome
RewriteCond %{HTTP_HOST} ^home.xrnic.cn$
RewriteCond %{REQUEST_URI} !^/home/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /home/$1
RewriteCond %{HTTP_HOST} ^home.xrnic.cn$
RewriteRule ^(/)?$ home/index.php [L]
#让bbs.xrnic.cn 访问bbs目录论坛
RewriteCond %{HTTP_HOST} ^bbs.xrnic.cn$
RewriteCond %{REQUEST_URI} !^/wap/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /bbs/$1
RewriteCond %{HTTP_HOST} ^bbs.xrnic.cn$
RewriteRule ^(/)?$ bbs/index.php [L]
----------------------------------------------------------------------------------
上面这些是我从网上找的,你去百度搜,90%都是这样的,这样的其实没问题,当对于我的应用来说,不合适
。因为我需要的是,用户一注册就可以得到一个二级域名,且可以访问,如果像上面那里,我需要在htaccess
里不断的添加映射代码。这样一是不方便,二是htaccess文件就会很庞大。好了,来看看我写的吧。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*?)/.paodot/.com$
RewriteCond %{REQUEST_URI} !^/users/%1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /users/%1/$1 [L]
RewriteCond %{HTTP_HOST} ^(.*)/.paodot/.com$
RewriteRule ^/(.*?)$ /users/%1/$1 [L]
这个是我最初写的,这个是可以用的(是错误的,后面讲),但是有个问题,当根目录有相同文件名的文
件存在时,就不会到你指定的目录去了。比如:我访问http://test222.paodot.net 这样访问,是可以访问到
/users/test222/index.php 这个页面的。但我用http://test222.paodot.net/index.php 这样访问,就访问到首页的
index.php去了。这问题刚开始很郁闷,后来仔细看了映射脚本,原来是
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
这两句导致第一个规则没有被应用,所以
http://test222.paodot.net/index.php 就等于是 http://paodot.net/index.php了。
于是我把这两句去掉,但是服务器却报500错误。这个是为什么,我也不懂。反正是不能去掉。
另外,对于 RewriteCond %{REQUEST_URI} !^/users/%1/,这个其实是个错误的写法。我们先来看看
RewriteCond 的原型: RewriteCond TestString CondPattern [flags]
TestString是一个纯文本的字符串,但是还可以包含反向引用
CondPattern是一个perl兼容的正则表达式
看了原型,才知道,我在CondPattern处写了反向引用语句,这个是错误的。。
进过一番周折,我有写了新的规则脚本,(这个是最终可以用的,哎,走了很多弯路),如下:
RewriteCond %{HTTP_HOST} ^([a-z0-9_]+)/.paodot/.net$ [NC]
RewriteCond %1 !^www
RewriteCond %{REQUEST_URI} !^/users/
RewriteRule ^(.*) /users/%1/$1 [L]
- 利用.htaccess搭建无限子站点
- 利用.htaccess绑定子域名到子目录
- 利用domain access建立子站点网络
- Nginx 利用子目录搭建多站点
- 利用.htaccess 保護網頁
- 利用.htaccess控制网站
- 利用,apache,htaccess
- 怎样利用.htaccess文件
- 利用Apache的VirtualHost在本地搭建多个站点
- IIS+花生壳+tomcat:利用免费域名搭建Web站点
- IIS+花生壳+tomcat:利用免费域名搭建Web站点
- 利用WordPress源代码轻松搭建个人博客站点
- HTACCESS子域名的设置
- 无限分类子查询
- 使用.htaccess实现子域名绑定子目录
- 利用.htaccess将域名绑定到子目录
- 利用 .htaccess 绑定域名到子目录
- 利用htaccess将全站无效url转到首页
- JSP文件如何打开?
- 全球金融资格考试大汇总
- 财经金融人士必上十大经典网站
- 经典人生感悟 看看你少了那一条!?
- ASP.NET学习笔记(五)
- 利用.htaccess搭建无限子站点
- 培养气质的99个好习惯
- 20110105
- 编写程序显示给定的文件大小,当文件不存在时显示出错信息。
- 华为K3手机驱动
- 随记
- DVD-lab PRO2.5 制作DVD图文实例教程(附:配套素材及工程文件)
- 论大学考试
- 用6次判断找到5个元素中的中位数