【Apache】apache简单配置URL重写规则

  【概述】URL重写就是首先获得一个进入的URL请求然后把它重新写成网站可以处理的另一个URL的过程。举个例子来说,如果通过浏览器进来的URL是index.php?type=news&&cata=sport&&id=123那么它可以被重写成 “news-sport-123.html”,这样的URL,这样的网址可以更好的被搜索引擎抓取。

  【优点】URL重写可以降低使用动态网页时受sql注入攻击的几率,还可以在不静态化的网页的情况下,利于搜索引擎对网页的抓取(SEO)。

  【配置】

  1,启用httpd.conf配置文件中的rewrite静态库

#开启apache rewrite重写模块
LoadModule rewrite_module modules/mod_rewrite.so

  2,配置测试虚拟主机

  2.1,启用httpd.conf配置文件中的httpd-vhosts.conf选项

# Virtual hosts 开启此选项,使其包含httpd-vhosts.conf配置文件
Include conf/extra/httpd-vhosts.conf

  2.2在httpd-vhosts.conf配置文件中添加一个虚拟主机

<VirtualHost *:80>
DocumentRoot
"X:/phptest/urlrewrite_test" ServerName www.gazeon.com
#Directory这个段,主要用处指定,该目录的访问权限 <Directory
"X:/phptest/urlrewrite_test"> #允许所有人访问 Allow from all #不列出该网站的文件列表 Options None #设置网站默认的首页面 http://www.gazeon.com DirectoryIndex index.php #配置统一的 404页面 errordocument 404 /error404.html #开启重写引擎 RewriteEngine On #配置url重写规则 ,使用正则匹配,$1,$2,$3表示第N个子表达式中匹配的结果 RewriteRule (w+)-(w+)-(d+).html$ index.php?type=$1&&cata=$2&&id=$3 </Directory> </VirtualHost>

  2.2.1【注意】如果你的apache安装目录没有httpd-vhosts.conf文件,可以将以上配置内容直接写到httpd.conf配置文件中。

  2.2.2【另外】你也可以在需要访问的文件目录下,直接通过写.htaccess文件来规范重写规则,比在httpd.conf文件中配置更灵活

#.htaccess文件内容
<IfModule rewrite_module>
#开启重写引擎 RewriteEngine On #配置url重写规则 ,使用正则匹配,$
1,$2,$3表示第N个子表达式中匹配的结果 RewriteRule (w+)-(w+)-(d+).html$ index.php?type=$1&&cata=$2&&id=$3 </IfModule>

  重启Apache。  

  3,在hosts文件中添加规则(可选)

  打开C:WindowsSystem32driversetc 目录下的hosts文件,添加如下代码

127.0.0.1/urlrewrite_test www.gazeon.com

  4,建立测试网也页

  在X:phptesturlrewrite_test 下新建index.php

<?php
/*
2016/3/10 YunGaZeon
此网页仅用于URL重写测试,因此尽量简单
*/
echo '<pre>';
print_r($_GET);
echo '</pre>';

   4.1浏览器打开www.gazeon.com/news-sport-123.html 测试查看

  显示以下内容,则配置成功

Array
(
    [type] => news
    [cata] => sport
    [id] => 123
)

  

  

  

原文地址:https://www.cnblogs.com/GaZeon/p/5262303.html