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进行域名层面的重写跳转。
最新文章
- jquery学习笔记-----事件和动画
- [html] Webp、Apng图片格式
- Android UI -- 内容简介
- django-admin.py失效的问题合集!
- jdk和jre有什么区别?
- Python中and(逻辑与)计算法则
- ROS_Kinetic_x ROS栅格地图庫 Grid Map Library
- jquery.jtable的事件
- jmeter(二十三)分布式测试
- 接口工具之postman
- plt实现动态画图
- Python从入门到精通之First!
- 牛客网小白月赛5I区间(差分数组)
- Swagger 路径过滤 -PreSerializeFilters
- 迁移桌面程序到MS Store(2)——Desktop App Converter
- js中的假值
- 洛谷P3599 Koishi Loves Construction 构造
- okhttp进行网络传输文件
- PLSQL Developer工具的使用
- 乘风破浪:LeetCode真题_014_Longest Common Prefix