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

时间:2018-01-18 10:08:05

标签: php apache .htaccess mod-rewrite nginx

我试图在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 parameterone parameter(并留在当前文件中)或/camera/parameter,它链接到另一个.php文件

1 个答案:

答案 0 :(得分:0)

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

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]