带有可选参数的nginx和htaccess重写规则

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有可选参数的nginx和htaccess重写规则相关的知识,希望对你有一定的参考价值。

我正在尝试在nginx.htaccess中重写规则。现在,我有一个链接http://project2.local/recordings可以像这样访问,但它有一个optional参数camera。所以你也可以像这样访问链接:http://project2.local/recordings/camera/1,现在它还有另一种选择。如果你去http://project2.local/recordings/20180118-110222(其中20180118-110222是一个查询字符串),你需要“链接”到另一个.php文件,所以我可以在分离的文件中运行php脚本。但我不清楚我应该怎么做...我目前有这个用于nginx:

 location /camera {
         rewrite ^/camera/([^/]*)$ /camera.php?camera_id=$1 last;
 }

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /camera.php?camera_id=([^&s]+)
RewriteRule ^/?camera.php$ /camera/%1? [L,R=301]
RewriteRule ^camera/([^/]*)$ /camera.php?camera_id=$1 [L]

现在这是另一个页面,但我怎么能为页面recordings做这个?

它需要有或no parameter,或one parameter(并留在当前文件)或/camera/parameter,它链接到另一个.php文件

答案

您可以将这些规则用于不同的模式:

RewriteRule ^recordings/?$ recordings.php [L,NC]

RewriteRule ^recordings/camera/(d+)?$ recordings.php?camera_id=$1 [L,NC,QSA]

RewriteRule ^recordings/(d+-d+))?$ another.php?param=$1 [L,NC,QSA]

以上是关于带有可选参数的nginx和htaccess重写规则的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 可以使用 3 个相同的参数吗?

需要帮助将 htaccess 规则转换为 nginx

htaccess 单参数重写规则

htaccess 多参数重写规则

.htaccess使用无限参数重写规则

。htaccess重写条件/规则并隐藏url参数