`

mod_rewrite使用详解

阅读更多


 一、什么是mod_rewrite?
 很多人可能知道这种技术,通常的用途是将一个动态的URL模拟为一个静态的URL,更好的供搜索引擎收录,这就是rewrite技术,当然它的功能不仅限于此。在这里,主要介绍apache中的rewrite功能。
 引用apache手册中的一句话:“欢迎来到mod_rewrite, URL操作的瑞士军刀!”, apache中的mod_rewrite主要是用来处理URL操作的,此模块从1997年7月起为Apache Group中的附加模块。关于apache, 详细资料请查看http://www.apache.org


 二、如何启动mod_rewrite支持?
 由于mod_rewrite是apache所附加的模块,apache在默认安装时不会添加这个模块,在windows中,可以通过修改httpd.conf文件来激活它,linux环境中则要在编译apache时加一条激活指令,具体方式为:
 1. windows环境:
  打开httpd.conf, 查找"#LoadModule rewrite_module modules/mod_rewrite.so", 将前边的#号去掉,保存httpd.conf, 重启apache, 激活mod_rewrite;
 2. linux环境:
  安装apache时使用这样的方式: "./configure --prefix=/usr/httpd2 --enable-so --enable-rewrite", --prefix指定安装后的目录,--enable-so指激活so模式, --enable-rewrite就是加入mod_rewrite支持了。
 
 注意:
  在windows下进行设置rewrite技术时保证你的PHP是以LoadModule的形式而不是CGI的模式载入的,以LoadModule模式加载的PHP配置文件在httpd.conf中像这样:
[php]
LoadModule php5_module "c:/php5.2/php5apache2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/php5.2"
[/php]
 
 三、开始体验
 先从最简单的功能开始来。先说明测试环境, 项目名称为rewrite_app:
[php]
+rewrite_app
   -test1.html
   -vhost.txt
[/php]
 注意,这里我们并没放置下边要访问的1.html文件,vhost.txt中是httpd.conf中虚拟服务器的配置文件。

 在httpd.conf里加入一个虚拟主机, 配置段位于httpd.conf尾部,当然,你要提前配置好php环境。虚拟服务器配置段像这样:
[php]
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot d:/phpsaf #改成你自己工程目录
    ServerName dummy-host.example.com
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common

    RewriteEngine on ##1.
    RewriteRule ^/1.html$ /test1.html ##2.

</VirtualHost>
[/php]
其实这段在apache中已经存在了,不过是以#注释掉了,你把每一行前边的#去掉, 然后再加入1, 2处即可完成最简单的rewrite配置,保存后重启apache, 然后在浏览器中输入http://localhost/1.html, 这时我们会看到test2.html中的内容,一个最简单的rewrite功能完成了.
 来看看两种配置选项的作用:
 RewriteEngin: on表示在本虚拟主机中启用rewrite技术,off表示关闭这一功能。
 RewriteRule: 这就是具体的rewrite规则了, 它的值分为两段, 第一段表示要匹配的模式,第二段表示匹配完成后要rewrite的页面,第一段为一个正则表达式,表示匹配以"/1.html"为开始并且结束的请求,当然也就是严格匹配http://localhost/1.html了,匹配完成后rewrite到http://localhost/test1.html页。在测试中你会发现在虽然已经rewrite到了test1.html,但URL中还是1.html, 当我们在RewriteRule这一句的最后再加入 [R]时后保存并重启后,再测试刚才的地址,就会发现它直接转到http://localhost/test1.html了,而且是连url也变了。加入[R]选项后的配置段像这样:
RewriteRule ^/1.html$ /test1.html [R]

 

另附参考:

 

mod_rewrite 详解

http://httpd.apache.org/docs/mod/mod_rewrite.html

http://www.3389hack.com/xueyuan/fuwuqi/linux/25054.html


分享到:
评论

相关推荐

    linux_apache_rewrite编译配置.pdf

    修改Apache配置文件`/usr/local/apache2/conf/httpd.conf`,找到`#LoadModule rewrite_module modules/mod_rewrite.so`这一行,去掉前面的`#`,使其变为`LoadModule rewrite_module modules/mod_rewrite.so`,然后...

    关于Apache_mod_rewite的中文配置和RewriteRule规则详细介绍

    通过本文的介绍,相信你已经掌握了Apache_mod_rewrite的基本配置与RewriteRule规则的使用。mod_rewrite不仅能够美化URL,提高用户体验,还能增强网站的安全性。合理运用mod_rewrite,将有助于打造一个更加专业、安全...

    Apress.The.Definitive.Guide.to.Apache.mod.rewrite.Feb.2006.pdf

    针对在实际部署和使用 mod_rewrite 过程中可能遇到的问题,本书整理了常见的错误和警告信息,并提供了相应的排查方法和解决方案,帮助读者快速定位并解决问题。 ### 结论 《Apache mod_rewrite 权威指南》是一部...

    url_Rewrite中文帮助文档

    7. **modRewriteConf**:是否使用类似于Apache的`mod_rewrite`配置,默认为`false`。如果设为`true`,则会使用类似Apache的`.htaccess`文件作为配置文件。 8. **modRewriteConfText**:直接在`web.xml`中定义重写...

    Rewrite伪静态组件

    **Rewrite伪静态组件详解** 在互联网开发中,"Rewrite伪静态组件"是一个非常重要的技术,它主要用于将动态URL转换为看似静态的URL形式,从而提高网站的用户体验和搜索引擎优化(SEO)效果。动态URL通常包含问号(?...

    apache2.4+tomcat7+mod_jk.so_整合配置

    它支持多种模块,如 `mod_rewrite`(URL 重写)和 `mod_security`(安全防护)。 2. **Tomcat 7**:Tomcat 是一个开源的 Java Servlet 容器,主要用于运行 Java Web 应用程序。Tomcat 7 是第七个主要版本,支持 ...

    如何在Ubuntu下启动Apache的Rewrite功能

    其中,`Mod_rewrite`模块是Apache的一个重要组件,它允许我们进行URL重写,这对于实现SEO优化、隐藏真实路径或者实现动态URL的静态化等场景非常有用。下面将详细介绍如何在Ubuntu下启动Apache的Rewrite功能。 首先...

    伪静态组件Rewrite

    **Rewrite模块详解** mod_rewrite是Apache HTTP Server中的一个URL重写模块,能够根据预定义的规则对请求的URL进行重新解析,从而实现URL美化、隐藏真实路径、动态URL转静态URL等功能。这个模块使用了一个叫做...

    IIS伪静态配置组件

    **IIS伪静态配置组件详解** IIS(Internet Information Services)是微软提供的一个Web服务器服务,用于托管网站和应用程序。在IIS中实现伪静态配置,可以提高网站的搜索引擎优化(SEO),改善用户体验,同时也降低...

    Apache Rewrite Module 的重定向问题

    LoadModule Rewrite_module libexec/mod_rewrite.so AddModule mod_rewrite.c ``` 对于Apache 2.x版本,配置方式略有不同,需在`conf/httpd.conf`文件中添加以下内容: ```apache LoadModule rewrite_module modules...

    php rewrite

    **Rewrite 规则详解** `RewriteRule` 是 mod_rewrite 模块的核心指令,它的格式是: ``` RewriteRule 模式 替换 [选项] ``` 1. **模式**:这是一个正则表达式,用来匹配请求的 URL。如果匹配成功,就会执行替换...

    Apache伪静态配置

    ### Apache伪静态配置详解 在Web开发中,伪静态配置是一种常见的优化手段,它通过将动态页面URL重写为静态页面URL的形式,不仅提升了用户体验,还对搜索引擎优化(SEO)有着显著的好处。本文将深入探讨Apache服务器...

    IIS rewrite

    **IIS Rewrite 知识详解** IIS Rewrite 是微软Internet Information Services(IIS)服务器上的一个模块,主要用于处理和重写URLs。这个强大的工具能够帮助开发者和网站管理员优化网站性能,提高SEO(搜索引擎优化...

    lighttpd简单配置

    `mod_proxy`, `mod_redirect`, `mod_rewrite`, `mod_rrdtool`, `mod_scgi`, `mod_secdownload`, `mod_setenv`, `mod_simple_vhost`, `mod_ssi`, `mod_staticfile`, `mod_status`, `mod_trigger_b4_dl`, `mod_...

    urlrewrite2伪静态与使用文档(IIS)

    urlrewrite2是微软IIS服务器的一个扩展,它是基于Apache的mod_rewrite模块而创建的,用于实现类似的功能。 在IIS服务器上,尤其是对于PHP开发环境,如PHPWAMP,有时需要同时运行不同版本的PHP以支持多个项目。...

    Apache HTTP Server Version 2.2 中文帮助详解文档

    例如,mod_rewrite用于URL重写,mod_security用于增强安全性,mod_deflate用于内容压缩等。 3. **虚拟主机**:Apache支持虚拟主机功能,允许多个域名在同一台服务器上运行独立的网站。这通过在配置文件中定义不同...

Global site tag (gtag.js) - Google Analytics