nginx 伪静态 rewrite

前一段时间领导让我用nginx做个伪静态,实现效果如下:

原URL http://www.domain.com/abc/def.jsp?x=1&y=2&z=3

转换为http://www.domain.com/abc/def-1-2-3.html,当我访问原URL时,浏览器的地址栏里显示的是转换后的URl,但内容还是原来动态页面的内容。

开始我是这么写的

rewrite ^/abc/def-(.*)\-(.*)\-(.*)\.html$ /abc/def.jsp?x=$1&y=$2&z=$3 last;

实现的效果是当我在地址栏里输入http://www.domain.com/abc/def-1-2-3.html这个URL的时候,确实显示的是原URL的内容。

但这和我想实现的效果不一样,谁会在浏览器里敲上这个URL啊,我想让它自己在浏览器里显示静态页面,而不是用户自己输入进去好吗?后来我了解到,这个是要程序那边在写地址的时候, 写这个静态的 url,不再写动态的url了,靠!整个人都不好了……

那有没有办法实现我想要的效果呢?北京的随心给我提供了一个思路:nginx跳两次。

你点击开直接访问的就是动态 url, 只不过做成301 跳转到后面的这个 不存在的静态页上面, 而在这里 又有一条伪静态规则, 将静态页跳到真实的动态页面, 但是使用 last 标记, 这个url 不会变,这样前台看到的就是静态的 url

思路有了,后面就简单了,在前面加一条rewrite 重定向即可。

当然了,这个方法并不实用也不建议用,最好还是在程序里面实现伪静态,nginx这么做的话坏处是显而易见的,但领导要这么个效果,先给他看看,后期还是要改的

时间: 2025-01-02 13:40:11

nginx 伪静态 rewrite的相关文章

nginx discuz 伪静态rewrite规则

越来越多的人把apache转到nginx,对于运行php来说,转移比较容易些. 但要实现伪静态,rewrite配置就会复杂一些,大多数人的问题都出在这里. 下面是nginx下discuz url rewrite配置模板,供大家参考. 注意:修改server_name,root为你的实际配置. 其它常见rewrite nginx wordpress rewrite规则 nginx cakephp rewrite规则 server { listen 80; server_name www.264.c

Nginx伪静态配置和常用Rewrite伪静态规则

伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面来介绍nginx 伪静态配置方法有需要了解的朋友可参考. nginx里使用伪静态是直接在nginx.conf 中写规则的,并不需要像apache要开启写模块(mod_rewrite)才能进行伪静态. nginx只需要打开nginx.conf配置文件,在server里面写需要的规则即可. 代码如下: server { listen       80; server_name  haha.

nginx伪静态配置教程总结

在nginx中配置伪静态,也就是常说的url重写功能,只需在nginx.conf配置文件中写入重写规则即可. 当然,这个规则是需要熟悉正则表达式,只掌握nginx自身的正则匹配模式即可,对正则不了解的朋友,建议补一下这方面的知识. 下面,收集了几篇关于nginx rewrite重写的教程文章,感兴趣的朋友可以看看. nginx伪静态.url rewrite重写教程: nginx配置301重定向及rewrite重写规则说明 nginx rewrite重写规则语句配置示例 nginx中url重写规则

Nginx伪静态规则

nginx伪静态规则 要将http://lovo.com/index.php?t=3用伪静态规则改写成http://lovo.com/t3.html,即可在nginx的conf/nginx.conf里面添加即可. 在location / {}里添加,如: location / {            root   /var/www/html;            index  index.php index.html index.htm;            rewrite ^(.*)/t

Drupal Nginx伪静态设置方法

location ~ ^.*/files\/styles\/.*$ { access_log off; expires 45d; error_page 404 @drupal; } location @drupal { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?q=$1 last; } } # Drupal Rewrite location / { root /path/to/drupal; index index.php i

CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法

众所周知,LAMP代表Linux下Apache.MySQL.PHP这种网站服务器架构:而LNMP指的是Linux下Nginx.MySQL.PHP这种网站服务器架构.LNMP一键安装包可以从网上下载使用. Nginx(发音同 engine x)由 Igor Sysoev 用C语言为俄罗斯访问量第二的搜索引擎 Rambler.ru 站点开发,是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器,其将源代码以类BSD许可证的形式发布,并在一个BSD-like

php配置伪静态如何将.htaccess文件转换 nginx伪静态文件

php通常设置伪静态三种情况,.htaccess文件,nginx伪静态文件,Web.Config文件得形式,如何将三种伪静态应用到项目中呢, 1,.htaccess文件 实例 <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ inde

nginx 配置rewrite 笔记

nginx 配置rewrite笔记: 通过下面的示例来说明一下,1. 先说说location : location 表示匹配传入的url地址,其中配置符有多种,各种情况的意义不一样: location ^~ /public/ { root /data/wwwroot/a.php.abc.cc; } location ^~ /public/ 表示匹配以 "/public/" 开头的url,匹配成功执行其中的内容,执行完毕后停止并退出. location / { root /data/ww

Nginx中 Rewrite学习笔记

路由重写是Web服务器中的一个很重要的基本功能.通过路由重写,可以结构化URL,更具语义化(对SEO有益).另外,分享出去的URL可能会因程序路由变动而导致URL失效,而路由的重写可以很好的解决这类问题. 适当的使用Rewrite功能,可以更我们带来很多的好处.Nginx中Rewrite的功能是基于perl语言兼容的正则表达式,所以在编译安装nginx之前,需要安装PREC库.Nginx中Rewrite功能实现是基于ngx_http_rewrite_module,所以确保安装了此模块. Rewr