Apache中 URL Rewrite技术的实现

原创 2004年09月13日 16:38:00

最近我们公司的网站在进行优化动作,要想采用一种好点的技术,使得原来的PHP动态形式的网页文件能够被GOOGLE等搜索引擎更加容易地收入其中,目前我们已经采用了一些改进办法:比如在后台用PHP程序将原来的文件改成HTM内容;采用Apache的Path_Info技术,但觉得还是不够强大,因此决定采用Apache中的URL Rewrite技术来试用一下。

很早就注意到它了,但一直不知道怎么实现,今天咬咬牙,翻了N篇有关的文章,终于实现了一些基本的功能:

1、修改http.conf

    在你要修改网站的根目录下:

 
    DefaultType application/x-httpd-php
    rewriteengine on #必须
    options followsymlinks    #必须
    RewriteRule /news/(/d+)/.html /news/.php/?id=$1 [N,L] #规则
    AllowOverride All

2、先修改http.conf

   
    DefaultType application/x-httpd-php
    options followsymlinks   
    AllowOverride All
 

然后再在此目录下建立一个.htacess文件,它的内容如下:
rewriteengine on
rewritebase /websamples/urlrewrite/
RewriteRule news/(/d+)/.html news/.php/?id=$1 [N,L]

这样就实现了将http://localhost/news/1000.html 解析为 http://localhost/news.php?id=1000的功能

附录:(一个网站的.htacess文件)

-------------------------------------------------------------------------------

ErrorDocument 401 /error.php
rewriteengine on
rewritebase /websamples/urlrewrite/power-for-less.com/

#show category
#
RewriteRule ^((laptop([^/]*))|(camcorder([^/]*))|(((digital)?).?camera([^/]*))|(power([^/]*))|(pda([^/]*))|(mobile([^/]*))|(two-way([^/]*))|(scanner([^/]*))|(mp3([^/]*)))/.htm(l?)$ babrand/.php/?fclassname=$1 [NC]

#show brands
#
RewriteRule ^(laptop([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(camcorder([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(((digital)?).?camera([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$5 [NC]
RewriteRule ^(power([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(pda([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(mobile([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(two-way([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(scanner([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]
RewriteRule ^(mp3([^/]*))/([^/]+)/.htm(l?)$ series/.php/?fclassname=$1&fb_babrand=$3 [NC]

#show products
#
RewriteRule ^(laptop([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(camcorder([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(((digital)?).?camera([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$6 [NC]
RewriteRule ^(power([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(pda([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(mobile([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(two-way([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(scanner([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]
RewriteRule ^(mp3([^/]*))/([^/]+)/(.+)/.htm(l?)$ product/.php/?fclassname=$1&fb_babrand=$3&code=$4 [NC]

关于apache开启rewrite模式后对URL解析测试

apache开启rewrite模式
  • lvqingyao520
  • lvqingyao520
  • 2016年11月23日 09:27
  • 979

13个实用的Apache Rewrite重写规则

1.去掉域名中的www标记 代码如下: RewriteCond %{HTTP_HOST} !^jb51\.net$ [NC] RewriteRule .? http://jb51.net%{RE...
  • jinxingfeng_cn
  • jinxingfeng_cn
  • 2016年07月19日 13:24
  • 3637

Apache URLRewrite 原理及配置实现

看一下网站上的一些 URL。您是否发现一些类似于 http://yoursite.com/info/dispEmployeeInfo. ... 99&type=summary 的 URL?或者,您...
  • txl16211
  • txl16211
  • 2014年10月13日 22:39
  • 2639

如何开启Apache2 Rewrite功能

一、Ubuntu默认未开启Rewrite支持 apche模块加载工作已分散到不同的配置文件,这样看起来似乎更为合理,管理起来也非常方便。下面看一下如何开启Rewrite模块,当用户需使用301重定向、...
  • loongwong2011
  • loongwong2011
  • 2016年08月16日 15:43
  • 2378

Apache Rewrite详细配置与使用说明

Rewirte主要的功能就是实现URL的跳转,隐藏URL真实地址,可以帮组我们实现拟静态,拟目录,域名跳转,防止盗链,搜索引擎得收录等,Rewirte的具体如何配置以及使用呢?...
  • Zhao1234567890123456
  • Zhao1234567890123456
  • 2014年08月14日 23:52
  • 6959

什么是URL Rewrite?URL Rewrite有什么用?

URL Rewrite的概念 URL Rewrite即URL重写,就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的...
  • shimiso
  • shimiso
  • 2013年02月20日 15:54
  • 10253

laravel无法正确路由,开启Apache mod_rewrite模块

具体情况:routes.php中 Route::controller('/' , 'testController');TestController.php中 public function getIn...
  • sck0088
  • sck0088
  • 2015年12月08日 17:21
  • 1848

linux下apache开启url重写的方法(详细说明)

Apache 2.x 中URL重写,是通过mod_rewrite.so 来实现的,所以您要查看您的Apache 是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf 中已经调...
  • panpan639944806
  • panpan639944806
  • 2014年01月02日 15:25
  • 1797

Apache Rewrite详细配置与使用说明

1、Rewrite简介         Rewirte主要的功能就是实现URL的跳转,隐藏URL真实地址,可以帮组我们实现拟静态,拟目录,域名跳转,防止盗链,搜索引擎得收录等。Rewirte配置...
  • qq_36031499
  • qq_36031499
  • 2017年01月10日 20:14
  • 1643

apache 虚拟主机和 rewrite 配置及 rewrite规则解释

如何使用rewrite步骤: 1.     配置apache,启用rewrite机制,修改httpd.conf 在httpd.conf中启用rewrite LoadModule rewrite_mod...
  • u012732259
  • u012732259
  • 2015年01月08日 17:40
  • 3034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Apache中 URL Rewrite技术的实现
举报原因:
原因补充:

(最多只允许输入30个字)