将 .htaccess 规则转换为 nginx 不起作用

将 .htaccess 规则转换为 nginx 不起作用

.htaccess 规则:

   RewriteEngine On
   RewriteCond %{QUERY_STRING} (.*)
   RewriteRule ^yon-(.*).mp4$ index.php?videodata=$1&yonlendir=true&%1 [NC]
   RewriteCond %{QUERY_STRING} (.*)
   RewriteRule ^(.*).mp4$ index.php?videodata=$1&%1 [NC]

转换为nginx:

   location /rigoplay {

   if ($query_string ~ "(.*)"){
   rewrite ^/yon-(.*).mp4$ /index.php?videodata=$1&yonlendir=true&%1;
   }
   if ($query_string ~ "(.*)"){
   rewrite ^/(.*).mp4$ /index.php?videodata=$1&%1;
   }
   }

但是它不起作用,抛出 404,URL 根本没有被重写。

domain.com/rigoplay/Y0FNRDZCMGVGbGJWL2FmUjRkbm1ieGR1c2ZUaStscVRoR0h2M1F0YzV6VTI3ZS9YNkpxZVhhQ0c3dz09.mp4

答案1

location /rigoplay/ {
   rewrite ^/rigoplay/yon-(.*)\.mp4$ /rigoplay/index.php?videodata=$1&yonlendir=true last;
   rewrite ^/rigoplay/(.*)\.mp4$ /rigoplay/index.php?videodata=$1 last;
}
  1. 你不需要if%1。Nginx 会自动将查询字符串添加到重写请求中。
  2. 您必须在 中使用完整的 URI rewrite

相关内容