查看: 4651|回复: 2

在XP操作系统下Apache Mod_Rewrite实现URL重写的配置方法

[复制链接]
发表于 2011-7-29 14:46:04 | 显示全部楼层 |阅读模式
台州网址导航
前段时间朋友的网站由于在做SEO URL的规划,需要利用Apache的Mod_Rewrite对URL进行重写,实现网站伪静态化。在拿到他们提供的URL规划方案后,我做了测试,大家可以看一下。

  测试环境:

  Windows xp

  PHP4.3

  Apache2.0.58

  配置步骤:

  第一步:找到apache的配置文件httpd.conf(文件在conf目录下)

  第二步:你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商。

  打开httpd.conf,找到

  #LoadModule rewrite_module modules/mod_rewrite.so

  把#去掉

  找到AllowOverride None 改成 AllowOverride All,

  注:AllowOverride 的参数设置为ALL,表示整台服务器上都支持URL规则重写。Apache 服务器要读每个网站下目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则就不会有任何效果。

  对于不同的网址,需要在APACHE中增加如下内容

  <Directory “E:/Apache Group/Apache2/htdocs/leapsoul”>

  /*引号里代表你的web存放目录*/

  /*如果是Linux,只要你定位到你网站目录即可*/
   Options FollowSymLinks
   AllowOverride None

  </Directory>

  第三步:重启apache服务器,先按stop再start。

  第四步:在你需要URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess,Windiws下不能直接建立,你可以用记事本另存为。

  注:我测试的时候在每个需要伪静态的目录下都存放了对应的.htaccess文件,同时在httpd.conf文件中像第二步那样对相关的目录添加了相应的<Directory>..</Directory>代码。

  第五步:在.htaccess中通过正则表达式映射需要伪静态的页面。

  URL正则表达式如下:

  RewriteEngine on
  RewriteRule index.html index.php
  RewriteRule (\d+).html$ info\.php\?infoid=$1

  注:URL规划的方案例子:

  www.leapsoul.cn/info/info.php?infoid=100

  映射为

  www.leapsoul.cn/info/100.html

  配置结束。

  在Linux下基本上没啥变动,我只修改了相关目录地址,运行正常。

  以上就是我关于利用Apache的mod_rewrite对URL重写的具体操作步骤,从而实现了网站URL伪静态化。有需要的朋友可以参考,有更好实现办法的也可以给我留言。
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
 楼主| 发表于 2011-7-29 14:46:39 | 显示全部楼层
台州网址导航
4、开启支持rewrite module

#LoadModule rewrite_module modules/mod_rewrite.so

去前面掉#,修改为


LoadModule rewrite_module modules/mod_rewrite.so

<Directory />
Options FollowSymLinks
AllowOverride None # 修改为AllowOverride All #
Order deny,allow
Deny from all
Satisfy all
</Directory>


<Directory "d:/wamp/www/">  
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# 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
#
AllowOverride None # 修改为AllowOverride All #
#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all
</Directory>
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
 楼主| 发表于 2011-7-29 14:50:18 | 显示全部楼层
台州网址导航
我们知道,搜索引擎是偏爱静态页面的,因此,把诸如:http://www.jianglb.com/?p=123的页面改成http://www.jianglb.com/apaeche-rewrite.html显然有利于被搜索.

但是,如果一般的直接用http://www.jianglb.com/apaeche-rewrite.html而又不存在这地址的文件,就肯定会报错文件不存在.

这就要使用到Apache的rewrite模块,把这些URL重定向某个动态程序如index.php,当然,index.php也需要有相应的程序识别这些地址,以从数据库存取数据.

启用rewrite,要确认apache配置文件:httpd.conf中有
LoadModule rewrite_module libexec/mod_rewrite.so

网站所在的目录定义了下面的内
容:
Options Indexes FollowSymLinks
AllowOverride all

网站所在目录还必须包括一个.htaccess
内容为:
rewriteengine on
rewritebase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

如此则URL请求自动发送到index.php了



我写了个正值表达试是这样的
RewriteRule   ^/*(.*?)/r_(.*?)-(.*?)-(.*?)-(.*?)-(.*?)\.html   $1/$2.php?type1=$3&type2=$4&type3=$5&page=$6     
伪静态格式必须为r_xxx-变量1-变量2-变量3-变量4.html
有什么正值表达式如果有一个变量就r_xxx-变量1.html
二个变量就r_xxx-变量1-变量2.html
三个变量就r_xxx-变量1-变量2-变量3.html
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州维博网络(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:企业网站建设、网站程序开发、手机APP客户端、平面设计、主机域名、虚拟空间、网站推广、网站优化、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2018 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表