首页
Linux教程
MongoDB教程
FTP教程
Apache教程
Nginx
jQuery
Redis
MySQL
PostgreSQL教程
PHP教程
Elasticsearch

Apache HTTP服务器

目录
Apache维护

URL重写


一、URL重写是什么?

    URL重写就是首先获得一个进入的URL请求,然后把它重新写成网站可以处理的另一个URL的过程。
    这个定义其实很多人不懂,我们来看一个例子。我们访问一下大的新闻网站,一个网页的网址可能是这样的:https://www.abc.com/abc_3.html,看到这个网址,有编程知识的人都会觉得它是一个静态网页,但其实它是一个动态网页,背后的真正网址是这样的:https://www.abc.com/page.php?user=abc&id=3。
    看到上面这2个网址,肯定有人要问,居然2个网址一样,直接用https://www.abc.com/page.php?user=abc&id=3不就可以了,还重新来干嘛。那要来说说网址https://www.abc.com/abc_3.html的优点:(一)可以"蒙骗"浏览器,因为浏览器都是优先收录不带参数的HTML网页;(二)不容易给黑客攻击。

二、操作步骤

    要想重写URL,必须先安装PCRE这个正则表达式程序,Apache安装是是默认安装这个PCRE模块的,所以能成功安装Apache的话,那就说明已经安装了这个模块。

    Apache开启url重写的方法:
    (1)打开Apache配置文件httpd.conf(在/xxx/conf目录里)
    (2)找到"#LoadModule rewrite_module modules/mod_rewrite.so",去掉前面的"#"。
    (3)找到"AllowOverride None"项目,改成"AllowOverride All",一般有2-3个位置,全部都要改掉。

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

    重写URL,其实就是用正则表达式的方式去书写这个转发规则,那必须要有一个文件来存放这些规则,这个文件就叫做".htaccess",这个文件存放于网站的根目录下,而且这个文件是一个隐藏文件,用 "ls"命令是看不到的,必须加上参数"-a"才能看到,"ls -a"。

    创建".htaccess"文件。

    [root@iZ28lcmnq9qZ /zwweb/temp2.12cc.com]#vim .htaccess

    "RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$ index.php?jl=$1&id=$2"
    这个规则重写后,浏览器输入网址:http://www.abc.com/apple-8.html,服务器实际处理的网址是:http://www.abc.com/index.php?jl=apple&id=8