标签 rewrite 下的文章

Rewrite重写时的优先级问题

现象:
把apache换成了nginx后,发现网站的播放页面明明生成了静态html文件,可是访问的确是伪静态文件(静态和伪静态路径一样)。

解决方法:

1、apache
在.htacess 文件中第二行增加:

RewriteCond %{REQUEST_FILENAME} !-f

其它常用的参数:

-d 是否是一个目录

-f 是否是一个文件

-s 是否是一个正常的有大小的文件

-l 是否是一个快捷方式

-x 是否是一个具有执行权限的文件

-F 检查TestString是还是是一个合法的文件

-U 检查TestString是否是一个合法的URL

2、nginx

if (!-f $request_filename){
rewrite ^/(.*)/(.*)/(.*)-(.*)$ /index.php?s=/vod-play-id-$2-sid-$3-pid-$4-listname-$1;
}

判断文件存在则优先访问文件,不存在则访问rewrite路径

飞飞影视系统2.0自定义伪静态路径及Rewrite重写规则

修改Lib\Common\common.php 在第681行 return $playurl;上方添加

$list_dir = getlistname($cid,'list_dir');
$playurl = '/'.$list_dir.'/'.$id.'/play-'.$id.'-'.$sid.'-'.$pid.'.html';

对应的Rewrite重写规则

RewriteRule ^(.*)/(.*)/(.*)-(.*).html$ /index.php\?s=/vod-play-id-$2-sid-$3-pid-$4-listname-$1

这样就实现了和生成每集静态一样的路径效果 ^_^
更新:需要在后台更改一下网站运行模式,然后再切换回来就可以生效了!

301重定向详解

IIS的301永久重定向设置如下图
620e13b9efbc4ed3895733a40c1916fd.jpg
IIS重定向参数
  1、$S-将请求的 URL 的后缀传递给新的 URL。后缀是用重定向的 URL 代替之后,初始 URL 中所保留的部分。如果未设置EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。
  2、$P-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,不包括问号 (?)。
  3、$Q-将初始 URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号 (?)。
  4、$V-传递请求的 URL,不包括服务器名和任何参数。要包含参数,可使用 $P 或 $Q 变量及 $V 变量。如果未设置EXACT_DESTINATION 标志,则结果目标 URL 的名称将具有所请求文件的名称(作为文件夹名称)以及文件名本身。

- 阅读剩余部分 -

typecho在Nginx环境下的rewrite规则

location / {
    if (-f $request_filename/index.html){
        rewrite (.*) $1/index.html break;
    }
    if (-f $request_filename/index.php){
        rewrite (.*) $1/index.php;
    }
    if (!-f $request_filename){
        rewrite (.*) /index.php;
    }
}