`
pujing
  • 浏览: 43185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)通过URL Rewrite实现链接静态化(PHP)

阅读更多
我们知道搜索引擎对于静态页面是非常友好的,因此很多网站通过生成静态页面等手段方便爬虫抓取自己网站的内容。但是有时候一些应用并不适合全部静态化,比如数据变化非常大的论坛/贴吧系统,这时候我们可以通过URL重写来实现链接的伪静态化,即网站对外使用静态化的链接,而内部实际上仍然使用动态页面的URL形式。比如像这样一个链接:http://www.ci123.com/abc.php?action=a&id=1,我们可以改写成http://www.ci123.com/abc/a/1.html的形式。这是搜索引擎优化最重要的内容之一,它还有一个额外的好处,可以使页面有一个永久链接,即便以后网站系统内部链接有变化,通过适当改变Rewrite规则就可以保证原先的外部URL一直有效。

下面介绍2种简单的Apache+PHP下实现URL重写的方法,第一种适合有服务器配置权限的用户,第二种适合租用空间的用户,也作为我近期的学习心得的整理。


1、对于有服务器配置权限的用户,推荐使用Apache的mod_rewrite模块,这里假设已经安装好mod_rewrite模块。打开Apache的配置文件,找到相应主机的部分,添加以下代码:
RewriteEngine On
RewriteRule ^/abc/([a-z]+)/([0-9]+).html$/abc.php?action=$1&id=$2 [L]然后在shell里执行service httpdreload,让Apache重新载入配置就好了。现在在PHP页面里面我们可以把链接写成abc/a/1.html的形式,Apache在解析这个URL的时候会rewrite成abc.php?action=a&id=1的形式,并返回正确的页面。运用正则表达式我们可以实现几乎任何我们想要的链接形式,mod_rewrite模块的功能异常强大,这里只是一个及其简单的应用。

2、对于租用空间的用户,一般都没有办法修改Apache的配置,这里有个变通的方法,原理是这样的:当要传递参数访问PHP页面时,正常情况下是通过自动全局变量$_GET来获得,比如上面的链接,在页面里可以通过$_GET['action'] 和$_GET['id']来获得,重写URL后就不行了。现在在每个页面里require一个url_rewrite.php文件,里面代码如下:

$filename = basename($_SERVER['SCRIPT_NAME']);

if (strtolower($filename) == "abc.php") {
if (!empty($_GET[id])) {
$id = intval($_GET[id]);
$action = intval($_GET[action]);
}
else {
$nav = $_SERVER["REQUEST_URI"];
$script = $_SERVER["SCRIPT_NAME"];
$nav = ereg_replace("^$script", "", urldecode($nav));
$vars = explode("/", $nav);
$action = intval($vars[1]);
$id = intval($vars[2]);
}
}
这样$action和$id也得到了,页面里链接可以写成abc.php/a/1的形式来访问相应页面。
需要注意的是这种方法效率较第一种低,第一种方法是在WEB服务器URL解析过程中实现的,而这里是在PHP页面解析过程里实现的,第2种方法只是变通,不得已而为之,要修改链接形式很不方便也不灵活。
欢迎大家一起交流讨论!
分享到:
评论

相关推荐

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

    标题“urlrewrite2伪静态与使用文档(IIS)”涉及到的是在IIS(Internet Information Services)服务器环境中,使用urlrewrite2模块实现URL重写和伪静态功能的技术内容。URL重写是Web开发中的一项关键技术,它允许...

    UrlReWrite(Url重写或伪静态)

    UrlRewrite通常通过编写规则文件来实现URL重写,如IIS的web.config或Apache的.htaccess。规则通常包含正则表达式,用于匹配和转换URL。以下是一个简单的示例: ```xml <match url="^article/([0-9]+)/(.*)$" /> ...

    Rewrite 页面静态化组建

    Rewrite 是一种在 Web 服务器中实现 URL 重写的技术,常用于网站优化和动态网站的伪静态处理。它允许我们通过自定义规则来改变用户请求的实际处理方式,而不会改变URL在浏览器中的显示形式,这对于SEO(搜索引擎优化...

    使用URL Rewrite实现网站的伪静态实例(urlrewritefilter-4.0.3)

    - 另外,可以通过`status`页面查看当前的规则和重写状态,只需在URL末尾加上`/urlrewrite-status`。 通过上述步骤,我们可以使用`UrlRewriteFilter 4.0.3`轻松实现网站的伪静态。这种技术不仅能够提高网站的可读性...

    URLRewrite.dll

    其中,`URLRewrite.dll`是IIS(Internet Information Services)服务器上的一个核心组件,专门用于处理URL重写规则,实现动态网页的伪静态化。本文将深入探讨`URLRewrite.dll`的工作原理、应用及其源码示例程序,以...

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

    在本示例源码中,我们将深入理解UrlReWrite的工作原理、应用场景以及如何通过源码实现。 1. **Url重写基本概念** - **Url重写**:Url重写是指将用户请求的实际URL(可能包含动态参数)转换为一个更加友好、简洁的...

    ecshop2.72 在IIS7环境下配置Rewrite (URL 静态化)规则工具及方法

    本文将详细介绍如何在IIS7环境下为ECSHOP配置Rewrite规则,实现URL静态化。 首先,我们需要理解URL重写(Rewrite)的概念。URL重写是通过服务器端的技术手段,将用户请求的实际动态URL转换为看起来像静态页面的URL...

    php-rewrite网站伪静态测试文件

    mod_rewrite是一个强大的URL重写工具,允许开发者通过自定义规则改变URL的结构,使原本动态的URL看起来像是静态的。这不仅有利于用户体验,也有利于SEO(搜索引擎优化),因为静态化的URL更易于理解和爬取。 **网站...

    rewrite文件,iis静态文件配置,php网站静态化文件

    `Rewrite`文件、IIS(Internet Information Services)静态文件配置以及PHP网站静态化文件是实现这一目标的关键技术环节。下面将详细解释这些概念及其在实际应用中的作用。 1. **Rewrite文件**: `Rewrite`文件...

    urlrewrite.dll

    描述中提到的“实现伪静态页面”是指通过UrlRewrite技术,将动态生成的网页以静态页面的形式展现给用户和搜索引擎,但实际上这些页面仍然是由服务器动态处理的。这种做法有以下几个优点: 1. **SEO优化**:静态URL...

    urlrewrite简单例子

    本篇文章将深入探讨如何使用urlrewrite实现动态页面静态化,并通过具体的例子来阐述这一过程。 首先,理解动态页面和静态页面的区别是至关重要的。动态页面是基于服务器端脚本(如PHP、JSP、ASP.NET等)生成的,...

    IISURL伪静态下载 rewrite_2.0_rtw_x64.msi

    IIS URL重写模块则是一个用于实现URL伪静态化的重要工具,它可以改善网站的SEO优化,提升用户体验,并简化网站的管理。"rewrite_2.0_rtw_x64.msi" 是IIS URL重写模块的安装包,专为64位系统设计,是实现IIS伪静态...

    urlrewrite伪静态 及多参数传递-附正则表达式语法

    标题中的“urlrewrite伪静态及多参数传递”指的是在Web开发中使用的一种技术,通过URL重写工具(如Apache的mod_rewrite或Tomcat的UrlRewriteFilter)将动态URL转换为静态化的、更友好的形式,同时实现多参数的传递。...

    网站安全urlrewrite教程和jar包

    在本教程中,我们将深入探讨URL重写的核心概念、使用场景以及如何借助`urlrewrite`工具来实现这一功能。 首先,URL重写的核心原理是利用服务器的内部重定向机制,将用户请求的可见URL转换为服务器内部处理的实际URL...

    urlrewrite重写demo

    **URLRewrite重写技术详解** ...总之,`URLRewrite`是实现伪静态技术的重要工具,通过合理的配置,可以显著提升网站的用户体验和SEO效果。了解并熟练掌握`URLRewrite`的使用,对于任何Web开发者来说都是必备技能之一。

    iis URL Rewrite

    比如,将动态参数化的URL转换为静态、描述性的URL,可以提升网站在搜索引擎中的排名。 ### 四、错误页面处理 URL Rewrite模块还可以定制HTTP错误页面,当用户请求的资源不存在或发生错误时,服务器可以返回自定义...

    网页静态化 URL重写代码实例

    UrlRewrite.dll是由IISRewrite团队开发的,它提供了强大的URL重写规则配置,使得开发者能够轻松地在ASP.NET应用中实现URL重写。 下面是一个使用UrlRewriter.dll进行URL重写的简单示例: ```xml <rewrite> ...

    Rewrite伪静态组件

    Rewrite是Apache服务器中的一种URL重写技术,通过使用.htaccess或者httpd.conf配置文件中的RewriteRule指令,可以实现URL的动态到静态转换。这个技术的核心在于Apache服务器的mod_rewrite模块,该模块允许开发者创建...

Global site tag (gtag.js) - Google Analytics