Nginx Rewirte

1. 基本标记、正则、文件与目录
A、基本标记
last - 基本上都用这个Flag。
※相当于Apache里的[L]标记,表示完成rewrite,不再匹配后面的规则
break - 中止Rewirte,不再继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301

B、 正则
* ~ 为区分大小写匹配
* ~* 为不区分大小写匹配
* !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配

C、 文件及目录匹配
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行

2. Discuz/ joomla/drupal

A、 discuz rewrite

  1. rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last;
  2. rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last;
  3. rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page%3D$4&page=$3 last;
  4. rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last;
  5. rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last;
  6. rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last;

B、 joomla rewrite

  1. location / {
  2. expires 30d;
  3. error_page 404 = @joomla;
  4. log_not_found off;
  5. }
  6. location @joomla {
  7. rewrite ^(.*)$ /index.php?q=$1 last;
  8. }

C、 drupal rewirte

  1. if (!-f $request_filename) {
  2. rewrite ^(.*)$ /index.php?q=$1 last;
  3. break;
  4. }
  5. if (!-d $request_filename) {
  6. rewrite ^(.*)$ /index.php?q=$1 last;
  7. break;
  8. }

4、 Wordpress/ typecho等博客系统写法

A、wordpress rewrite

  1. if (-f $request_filename/index.html){
  2. rewrite (.*) $1/index.html break;
  3. }
  4. if (-f $request_filename/index.php){
  5. rewrite (.*) $1/index.php;
  6. }
  7. if (!-f $request_filename){
  8. rewrite (.*) /index.php;
  9. }

B、typecho rewrite

  1. location / {
  2. index index.html index.php;
  3. if (-f $request_filename/index.html){
  4. rewrite (.*) $1/index.html break;
  5. }
  6. if (-f $request_filename/index.php){
  7. rewrite (.*) $1/index.php;
  8. }
  9. if (!-f $request_filename){
  10. rewrite (.*) /index.php;
  11. }
  12. }

本文转自守住每一天51CTO博客,原文链接:http://blog.51cto.com/liuyu/294739,如需转载请自行联系原作者

Nginx实用指南V1 (连载之四:流行CMS博客rewrite写法)相关推荐

  1. Nginx实用指南V1 (连载之六:cacti监控)

    申明:本连载的文章来自:Nginx官网.张 宴BLOG.linuxtone论坛.互联网.本人原创.并尽力在官网文档的基础发表原创作品.并保证文档的质量与错误率.如有作者认为本文有涉及版权问 题请与我联 ...

  2. Nginx+Docker+Jekyll+阿里云ECS+备案搭建博客全记录

    "记录本站搭建全过程,为想要自己搭建博客的朋友提供一个参考" 在我的博客网站中查看本文 前言与准备 Docker Docker是一个很方便的跨平台应用容器引擎,让开发者可以打包他们 ...

  3. 《软技能:代码之外的生存指南》一一21.1 为什么博客如此重要

    本节书摘来自异步社区出版社<软技能:代码之外的生存指南>一书中的第21章,第21.1节,作者: [美]John Z. Sonmez(约翰 Z. 森梅兹),更多章节内容可以访问云栖社区&qu ...

  4. .net开发网站CMS博客框架

    做一个网站基本步骤一般完整的包括需求分析-ui设计-前端开发-后端开发-测试-运维,一般需求确定了基本就可以,这里主要介绍后台.net网站开发,即拿到前端代码后如何进行.net后台开发,这里以一个博客 ...

  5. octobercms mysql_手把手教你选择一款适合自己的CMS/博客程序

    第1章 CMS基础介绍 1.1 CMS是什么? CMS是Content Management System的英文缩写,中文译作内容弄管理系统.说得简单点,Wordpress这种博客系统就是一种CMS. ...

  6. WordPress响应式主题:Three/博客/CMS/博客导航三合一主题

    效果演示:http://cxyo.vip/ 下载地址在最后面 主题使用说明 1.首页设置 ①选择首页布局:博客布局或杂志布局或博客导航,默认博客布局,若选择杂志布局或博客导航后,必须设置CMS/导航布 ...

  7. 如何利用宝塔面板+nginx建立一个自己的网站(如博客图床等等)

    其实最近一直在搭建自己的博客和自己的图床,遇见了一些各种各样的问题,所以在这里总结一下如何利用宝塔面板来建立一个网站. 1.网站在服务器中的形式 其实网站虽然是网站我们能访问到,实际上我们访问到的都是 ...

  8. NodeJS+Mongodb+Express做CMS博客系统

    楼主正在用业余时间开发中-- ,目前的版本仅支持会员系统,尝鲜一下吧~ hi-blog 一个 nodejs+express+mongodb 的 cms 系统 怎么启动 默认你已经安装了 mongodb ...

  9. Diango博客--11.Nginx + Gunicorn + Supervisor 方式部署

    文章目录 0.部署前准备 1.创建一个超级用户 2.更新 SQLite3 3.安装 Python3 .pip3.6以及 Pipenv 4.部署代码 5.使用 Gunicorn 6.启动 Nginx 服 ...

最新文章

  1. java 庖丁解牛api_Java Restful API Best Practices
  2. redchat怎么编写shell脚本_shell脚本编写思路
  3. 确认过眼神(*╹▽╹*),这就是大家想要的BCH
  4. python是大学必修课吗-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...
  5. a commit git 参数是什么意思_深入理解Git - 一切皆commit
  6. 数据处理程序的一点经验
  7. python测试代码运行时间_python测量代码运行时间方法
  8. Java 正则表达式匹配模式[贪婪型、勉强型、占有型]
  9. android 全局 窗口,学习笔记:WindowManager显示Android全局悬浮窗口
  10. 拓端tecdat|R语言法国足球联赛球员多重对应分析(MCA)
  11. 电信校园网宽带创翼破解,路由器PPPOE拦截法
  12. 计算机笔记--【JVM】
  13. 基于蚁群算法的MTSP问题
  14. 如何建立风险分析模型
  15. 尽挥洒最终版 思嫣_温州方言歌曲_温州话歌曲
  16. 学好C/C++编程,走遍天下都不怕
  17. Error:Cannot run program XXX (in directory C:\Users\Administrator\.IntelliJIdeaXXX
  18. 玩转树莓派 一、为你的树莓派烧录系统镜像
  19. 20世纪中国耕地与复种指数的变化
  20. 计算机英语教程第六版pdf,计算机英语教程.pdf

热门文章

  1. mysql空间扩展 VS PostGIS
  2. 函数式编程与REST的思考
  3. OpenGL中glTranslate*(),glRotation*(),glScale*()函数的用法(*是参数数据类型)
  4. ROS Gazebo(五):ros_control和gazebo仿真总结
  5. Appium使用のhelloworld
  6. 自动化测试,从入门到放弃
  7. 解决Access denied for user #39;#39;@#39;localhost#39; to database #39;mysql#39;问题
  8. (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】
  9. Hypertext Transfer Protocol -- HTTP/1.1
  10. 艾伟也谈项目管理,说说我们项目组的考核