http://strangebank.bokee.com/viewdiary.16292545.html
前两天为了让Sylvan的用户能够更方便的记忆自己的个人空间的地址,研究了一下Apache的URL Rewrite功能,实现了每个用户可以把自己的用户名作为二级域名的虚拟主机的设定。
其实,之前也用过URL Rewrite模块,只不过只是用来转换URL中传入的参数的。这次用它来做虚拟主机,其实原理是一样的。
先说一下目的。我想做到的是用户在浏览器中输入类似 http://wells
.osall.com/test.php?a=1&b=2
这样的URL地址时,把蓝色部分的用户名作为一个参数并转到页面在服务器上的真正的实际地址 /path/to/file/test.php?un=wells
&a=1&b=2
,并且要让用户在浏览器中看到的URL地址不发生改变。
要实现这个功能,首先要在DNS服务器上打开域名的泛域名解析(自己做或者找域名服务商做)。比如,我就把 *.osall.net 和 *.osall.com全部解析到了我的这台Linux Server上。
然后,看一下我的Apache中关于*.osall.com的虚拟主机的设定。
-
#*.com,*.osall.net
-
<VirtualHost *:80
>
-
ServerAdmin webmaster@osall.com
-
DocumentRoot /home/www/www.osall.com
-
ServerName dns.osall.com
-
ServerAlias dns.osall.net osall.com osall.net *.osall.com *.osall.net
-
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/osa/a_wosa_log.%Y%m%d 86400"
common
-
ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/osa/e_wosa_log.%Y%m%d 86400"
-
<Directory
/home/www/www.osall.com
>
-
AllowOverride None
-
Order deny
,allow
-
#AddDefaultCharset GB2312
-
</Directory>
-
<IfModule mod_rewrite.c
>
-
RewriteEngine on
-
RewriteCond %{HTTP_HOST} ^[^.]+\.osall\.(com|net)$
-
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
-
RewriteRule ^([^.]+)\.osall\.(com|net)(.*)$ /home/www/www.osall.com/sylvan$3?un=$1&%{QUERY_STRING} [L]
-
</IfModule>
-
</VirtualHost>
在这段设定中,我把*.osall.net和*.osall.com 的Document Root都设定到了 /home/www/www.osall.com
但是,继续看下去,看到
<IfModule mod_rewrite.c
>...</IfModule>
配置了吗?在这里我就配置了URL Rewrite规则。
RewriteEngine on
#打开URL Rewrite功能
RewriteCond %{HTTP_HOST} ^[^.]+.osall.(com|net)$
#匹配条件,如果用户输入的URL中主机名是类似 xxxx.osall.com 或者 xxxx.osall.net 就执行下面一句
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
#把用户输入完整的地址(GET方式的参数除外)作为参数传给下一个规则,[C]是Chain串联下一个规则的意思
RewriteRule ^([^.]+).osall.(com|net)(.*)$ /home/www/dev.osall.com/sylvan$3?un=$1&%{QUERY_STRING} [L]
# 最
关键的是这一句,使用证则表达式解析用户输入的URL地址,把主机名中的用户名信息作为名为un的参数传给 /home/www
/dev.osall.com目录下的脚本,并在后面跟上用户输入的GET方式的传入参数。并指明这是最后一条规则([L]规则)。注意,在这一句中指明
的重写后的地址用的是服务器上的绝对路径,这是内部跳转。如果使用http://xxxx这样的URL格式,则被称为外部跳转。使用外部跳转的话,浏览着
的浏览器中的URL地址会改变成新的地址,而使用内部跳转则浏览器中的地址不发生改变,看上去更像实际的二级域名虚拟服务器。
这样设置后,重起Apache服务器,测试一下,就大功告成了!
分享到:
相关推荐
Apache 二级域名的设置是构建多站点环境的关键步骤,它允许你用不同的子域名来区分不同的服务或内容。本文将详细介绍一种最简单快速的方法来实现Apache二级域名。 首先,你需要确保你的顶级域名(如 `domain.com`)...
以下是配置Apache服务器二级域名的详细步骤: 1. **开启mod_rewrite模块**: 在Apache服务器中,`mod_rewrite`模块允许你进行URL重写,这对于创建友好的SEO网址或者实现URL路由非常有用。首先,你需要确认该模块...
泛解析是DNS(域名系统)设置的一种功能,允许将一个通配符(*)设置为二级域名,这样任何未被明确定义的二级域名请求都会导向预设的IP地址或网页。例如,如果设置 "*.example.com" 的泛解析,那么 "news.example....
### Apache服务器配置与使用知识点详解 #### 一、Apache服务器简介 Apache服务器是一款广泛使用的开源Web服务器软件,它能够高效地处理HTTP请求,并提供多种功能扩展。Apache支持跨平台运行,包括Windows、Linux、...
在实际操作中,我们还需要学会使用命令行工具如apachectl来启动、停止和监控Apache服务,以及使用htaccess文件进行局部配置,比如设置密码保护或者URL重写规则。 通过深入学习和实践,读者不仅可以掌握Apache的基本...
虚拟主机功能使得一台服务器可以托管多个独立的网站,每个网站拥有自己的域名和配置。手册会指导如何设置基于IP、基于域名或基于端口的虚拟主机,并解释配置文件中的相关指令。 五、安全与性能优化 安全是任何...
2. **使用Rewrite模块**:Apache的mod_rewrite模块提供了一种强大的URL重写机制,可以用于实现更复杂的路由规则。例如,我们可以用它来将所有请求重定向到某个特定的目录,或者根据不同的域名执行不同的操作。在`....
本教程详细介绍了Apache配置的各个方面,从基本的服务器设置到高级的优化技巧,涵盖了日常管理和维护Apache服务器所需的所有知识。通过深入学习和实践,你将能够有效地配置和管理自己的Apache服务器,提升其性能和...
3. **虚拟主机**: Apache支持虚拟主机,允许在一个服务器上托管多个网站。通过`NameVirtualHost`指令和`<VirtualHost>`块,可以配置不同的域名指向不同的目录。 4. **模块管理**: Apache有许多模块,如mod_rewrite...
1. 配置文件结构:Nginx的配置文件通常为nginx.conf,包含多个server块,每个server块可以配置监听的端口、域名、虚拟主机等信息。 2. 模块化设计:Nginx通过模块化设计,可以灵活扩展功能,如HTTP、HTTPS、Proxy、...
【Apache2中文教程】 ...总之,本“Apache2中文教程”将带你全面了解Apache2服务器的各个方面,包括基本配置、虚拟主机、安全设置、性能优化和故障排查。通过学习,你将能够熟练地管理和维护自己的Apache2服务器。
3. **虚拟主机**:Apache支持虚拟主机,允许在同一台服务器上托管多个网站,通过不同的域名区分。这涉及到配置文件中的VirtualHost指令。 4. **访问控制与安全**:Apache提供多种方式来限制或授权访问,如基本认证...
2. **虚拟主机**:通过VirtualHost指令,可以在同一台服务器上托管多个域名,每个域名有自己的独立配置。 3. **访问控制**:通过Allow、Deny和Order指令,可以限制或允许特定IP地址或网络访问特定资源。 4. **URL...
### Apache中Virtual Host虚拟主机配置及Rewrite参数详解 #### 一、Virtual Host虚拟主机配置 **1.1 概念介绍** 在Apache服务器中,Virtual Host(虚拟主机)技术允许在同一台物理服务器上托管多个不同的网站或Web...
3. **虚拟主机**:Apache可以配置多个虚拟主机在同一台服务器上运行,每个虚拟主机对应一个独立的域名或IP地址。这涉及到VirtualHost指令的使用,以及不同站点的文档根目录设置。 4. **访问控制**:Apache提供了...
接下来,你需要在配置文件(通常是 `conf/httpd.conf` 或 `conf/extra/httpd-vhosts.conf`)中添加Rewrite规则,如果使用了虚拟主机,务必把这些规则放入 `<VirtualHost>` 标签内。具体规则与 `.htaccess` 文件类似...
配置Apache涉及多个层面,包括基本设置、虚拟主机配置、SSL加密配置等。以下是一些关键配置步骤: 1. **修改监听端口**:默认情况下,Apache监听在80端口上。如果需要更改端口,可以在`httpd.conf`文件中找到`...