我们正在将网站从 Apache 迁移到 Nginx。到目前为止,我们从 .htaccess 规则转换为 nginx 的规则运行良好,但这个特定规则让我很难过。
我尝试过使用 if(我不使用)的在线转换器并手动尝试转换规则但没有任何效果。如果有人能指导我正确的方向或指出我出错的地方,那将有很大的帮助。
Apache .htaccess 规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)/([a-z]+).html$ /products/code_asset_2019.php?page=$1&filename=$2 [L]
RewriteRule ^(.*)/(.*\.php)$ /products/code.php?page=$1
RewriteRule ^(.*).html$ /products/code.php?page=$1
</IfModule>
目录结构:
root /var/www/html
;
里面
/html
,我们有/products
包含code_asset_2019.php和code.php的文件夹
我转换后的规则不起作用:
location /products {
try_files $uri $uri/ @rules;
}
location @rules {
rewrite ^/([a-z]+)/([a-z]+)\.html$ /products/code_asset_2019.php?page=$1&filename=$2 last;
rewrite ^/(.)/(.\.php)$ /products/code.php?page=$1;
rewrite ^/(.*)\.html$ /products/code.php?page=$1;
return 404;
}
为什么不用这个代替你拥有的一切: