Apache和Nginx设置伪静态(URL Rewrite)的方法

在Apache中有两种方法配置,一是通过httpd.conf文件,二是通过.htaccess文件。 

使用 httpd.conf 来配置 rewrite 策略。 

要使用 httpd.conf 文件来设置伪静态策略,我们可以直接在 httpd.conf 中写入如下代码,如果您的网站是配置在 VirtualHost 中,则将这段代码加到对应的。 

使用.htaccess来配置rewrite策略。 

检查httpd.conf中的: 

RewriteEngine on

RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3

复制代码保存后重启httpd服务即可生效。 

常见问题: Q:为何都按上面设置了缺还是无法静态化? A:很有可能是因为别的目录设置项覆盖了。 

Nginx: 

Nginx下设置伪静态方法与Apache差不多,直接在nginx.conf (或者在对应的*.conf) 中找到需设置伪静态规则的服务器对应字段,在server{ location/{ } }中添加以下代码: 

server {

listen 80 default_server;

server_name _;

location / {

root /usr/share/nginx/html;

index index.html index.htm;

rewrite ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3;

}

}

添加后重启Nginx服务即可生效! 

正则表达式匹配 

就用上面的例子中的伪静态策略来简单解释下正则表达式在配置的作用:

策略:RewriteRule ^(.*)list-([0-9]+)-([0-9]+)\.html$ $1list.php?page=$2&id=$3 

请求路径:http://www.abc.com/list-123-456.html 

本策略分成两段,第一段是使用正则表达式去匹配请求访问的路径,第二段是将匹配后的参数转化为真实访问的路径。策略执行时:^(.*)list-([0-9]+)-([0-9]+)\.html$ 与 /list-123-456.html这个字符串进行匹配: 

^和$字符分别代表了匹配输入字符串的开始和结束 

()中的匹配到的内容会被按顺序分配到变量$1 $2 $3中 

.*匹配任意字符串,且长度从0个到多个,故$1值为/ 

[0-9]+匹配字符0-9,长度1个到多个,故$2和$3分别是123和456 

所以最后真实访问的动态地址为/list.php?page=123&id=456 

上面只是介绍了基本的配置策略,其实这个rewrite规则还有非常多的玩法,例如使用RewriteCond进行域名层面的重写跳转。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值