`
andrew1024
  • 浏览: 74254 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache URL重写实现伪静态

阅读更多
一.Apache设置

独立主机用户

Apache 基本配置:

首先确定您使用的 Apache 版本,及是否加载了 mod_Rewrite 模块。

Apache 1.x 的用户请检查 conf/httpd.conf 中是否存在如下两段代码:

LoadModule Rewrite_module libexec/mod_Rewrite.so

AddModule mod_Rewrite.c

Apache 2.x 的用户请检查 conf/httpd.conf 中是否存在如下一段代码:

LoadModule Rewrite_module modules/mod_Rewrite.so

如果没有安装 mod_Rewrite,您可以重新编译 Apache,并在原有 configure 的内容中加入 –enable-Rewrite=shared

注:如果前面有#,将其去掉。

方法一:通过配置Apache配置文件httpd.conf实现URL重写

在配置文件(通常就是 conf/httpd.conf)中加入如下代码。

<IfModule mod_Rewrite.c>

RewriteEngine On

RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2

RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3

RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3

RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3

RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2

</IfModule>

注:此时请务必注意,如果网站使用通过虚拟主机来定义,请务必加到虚拟主机配置,即 <VirtualHost> 中去,如果加在虚拟主机配置外部将可能无法使用,改好后将 Apache 重启。

方法二:通过在根目录中的跨越配置文件.htaccess实现URL重写

   1. 配置apache支持对 .htaccess 文件的解析

查找:

<Directory /> 

Options FollowSymLinks 

AllowOverride None 

</Directory>

修改为:

<Directory />

Options FollowSymLinks 

AllowOverride All

</Directory>

man对AllowOverride 的解释:

AllowOverride controls what directives may be placed in .htaccess files.

It can be “All”, “None”, or any combination of the keywords:

Options FileInfo AuthConfig Limit

就是说,将None改为All,.htaccess文件才能被支持!

   1. 创建.htaccess文件Win32 系统下,无法直接建立 .htaccess 文件,您可以从其他系统中拷贝一份,或者在 Discuz.net 技术支持栏目中下载此文件。
   2. 编辑.htaccess文件

# 将 RewriteEngine 模式打开

RewriteEngine On

# 指向 php 文件所在目录如果php文件与 .htaccess 在同一目录则为 RewriteBase /

RewriteBase /

# Rewrite 规则

RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1

RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2

RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2

RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2

RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

租用空间用户

   1. 首先咨询您的空间服务商,空间是否支持 Rewrite 以及是否支持对站点目录中 .htaccess 的文件解析,否则即便按照下面的方法设置好了,也无法使用。
   2. 创建.htaccess文件Win32 系统下,无法直接建立 .htaccess 文件,您可以从其他系统中拷贝一份,或者在 Discuz.net 技术支持栏目中下载此文件。
   3. 编辑.htaccess文件

# 将 RewriteEngine 模式打开

RewriteEngine On

# 指向 php 文件所在目录如果php文件与 .htaccess 在同一目录则为 RewriteBase /

RewriteBase /

# Rewrite 规则

RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1

RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2

RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2

RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2

RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

二.Rewrite 规则

上面无论是在apache中设置的:

<IfModule mod_Rewrite.c>

RewriteEngine On

RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2

RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3

RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3

RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3

RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2

</IfModule>

还在是文件.htaccess中添加的:

# 将 RewriteEngine 模式打开

RewriteEngine On

# 指向 php 文件所在目录如果php文件与 .htaccess 在同一目录则为 RewriteBase /

RewriteBase /

# Rewrite 规则

RewriteRule ^archiver/((fid|tid)-[\w\-]+\.html)$ archiver/index.php?$1

RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2

RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2

RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2

RewriteRule ^tag-(.+)\.html$ tag.php?name=$1

其中都指明了URL重写规则。

请看:RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2

这句说明了URL为forumdisplay.php?fid=$1&page=$2可以写成forum-([0-9]+)-([0-9]+)\.html这种模式。

如:访问http://localhost/ forumdisplay.php?fid=1&page=2与访问http://localhost/ forum-1-2.html的效果是一样的!

注:这些规则是可以自己写正则表达式随意更改的。根据自己需要的格式。来定制URL重写规则。
分享到:
评论

相关推荐

    UrlReWrite(Url重写或伪静态)完美示例源码

    描 述:UrlReWrite(Url重写或伪静态)完美示例源码 UrlReWrite(Url重写或伪静态)完美示例源码,已利用ActionlessForm解决原始地址form回传的问题 例如:/products.aspx?category=books 转换为/products/Books....

    url重写 URL伪静态

    实现URL重写和伪静态的方法多种多样,其中Apache服务器通常使用.htaccess文件进行配置,通过定义RewriteRule和RewriteCond规则来实现URL的转换。IIS服务器则使用web.config文件进行设置。例如,在Apache的.htaccess...

    apache,R,P,url重写_伪静态_反向代理

    apache,R,P,url重写,伪静态,反向代理

    开启win2003 IIS PHP URL重写_伪静态

    首先,让我们了解什么是URL重写和伪静态。URL重写是一种技术,它允许你改变URL的结构,而实际资源的位置不变。这在隐藏复杂查询字符串、创建用户友好的短链接或改善SEO方面非常有用。伪静态则是将动态生成的网页以...

    网站重写url伪静态工具

    ISAPI_Rewrite,ISAPI_Rewrite用来实现伪静态,将动态网页通过重写URL的方法实现去掉动态网页的参数!它的行为是像Apache的mod_Rewrite ,但专为微软的Internet信息服务( IIS )。 IIS配置相当简单,配置好之后就有...

    UrlReWrite(Url重写或伪静态)

    UrlRewrite是一个强大的URL管理工具,它主要用于将复杂的URL转换为简单、易记且友好的形式,这个过程被称为URL重写或伪静态处理。在Web开发中,URL重写技术对于提升用户体验、优化搜索引擎排名(SEO)以及维护网站...

    伪静态URL重写技术

    伪静态URL重写技术是一种常见的Web开发技巧,主要用于优化网站的搜索引擎优化(SEO)和提高用户体验。这种技术将动态的、包含参数的URL转换为看似静态的、更友好的URL形式,使得用户和搜索引擎更容易理解和处理。在...

    urlrewrite重写URL伪静态请求路径.

    标题 "urlrewrite重写URL伪静态请求路径" 涉及到的是Web开发中的一个重要概念——URL重写,这是为了优化网站的SEO(搜索引擎优化)和用户体验而进行的一种技术手段。URL重写允许我们将复杂的动态URL转换为简洁、易于...

    Apache中使非伪静态url跳转到伪静态url的方法

    ### Apache中使非伪静态URL...通过上述解析,我们不仅了解了如何在Apache中通过`.htaccess`文件实现非伪静态URL到伪静态URL的跳转,还学习了一些相关的概念和技术细节。希望这些内容能帮助到正在面临类似问题的朋友们。

    apache虚拟目录和伪静态的配置

    Apache服务器是世界上最流行的开源Web服务器,它提供了许多强大的功能,包括虚拟目录和伪静态处理。在网站部署和管理中,这两个特性尤其重要,能够帮助我们实现灵活的网站组织和优化用户体验。 **Apache虚拟目录** ...

    商业编程-源码-UrlReWrite(Url重写或伪静态)完美示例源码.zip

    这个"UrlReWrite(Url重写或伪静态)完美示例源码"包含了实现这些功能的具体代码,对于开发者来说是一份宝贵的参考资料。通过阅读和分析源码,我们可以: - 学习如何配置和编写URL重写规则。 - 了解内部实现逻辑,包括...

    让IIS支持Apache .htaccess 伪静态规则

    这两种服务器在处理URL重写和伪静态规则方面有所不同,Apache通常使用的是.htaccess文件,而IIS则使用其内置的URL重写模块。本篇文章将详细讲解如何让IIS支持Apache的.htaccess伪静态规则。 首先,了解什么是伪静态...

    伪静态(url重写)

    总结起来,伪静态(URL重写)是通过Java Filter或其他工具在服务器端实现的一种技术,它能够将动态URL转换为静态形式,提升用户体验,增强搜索引擎的可读性。在Java环境中,我们可以利用`Filter`接口或开源库如`...

    Url重写文件(伪静态).zip

    本压缩包文件"Url重写文件(伪静态).zip"很可能包含了一个实现URL重写的配置文件,如`.htaccess`(针对Apache服务器)或`web.config`(针对IIS服务器)。 1. **什么是URL重写**: URL重写是通过服务器端的规则...

    伪静态和url重写 实现二级域名

    **四、整合应用:在IIS上实现二级域名的伪静态和URL重写** 1. 首先,在IIS服务器上配置好主站点,确保动态内容正常运行。 2. 在域名控制面板中,设置泛解析,将`*`指向主站点的IP地址。 3. 安装并配置IIS的URL ...

    Apache伪静态配置

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

    URL伪静态(重写URL)

    例如,在Apache的`.htaccess`文件中,我们可以设置如下规则将动态URL重写为伪静态形式: ```apacheconf RewriteEngine On RewriteRule ^product/([^/]+)/?$ /product.php?id=$1 [L] ``` 这个规则将`/product....

Global site tag (gtag.js) - Google Analytics