从.htaccess转换nginx规则

前端之家收集整理的这篇文章主要介绍了从.htaccess转换nginx规则前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我将一些.htaccess规则转换为Nginx服务器时遇到问题.

RewriteRule ^$index.PHP [L]
RewriteRule ^([A-Za-z0-9-]+)?$index.PHP?section=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$index.PHP?section=$1&go=$2 [L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$index.PHP?section=$1&go=$2&action=$3 [L]

有人能够协助转换和解释这些正则表达式如何转换为Nginx

我不确定语法,根据Nginx文档,我尝试了以下内容

server {
  rewrite ^([A-Za-z0-9-]+)?$index.PHP?section=$1&go=$2;
}

我也尝试过根位置块,如下所示.我不确定try_files如何影响这个.

location / {

    rewrite ^$/index.PHP break;
    rewrite ^([A-Za-z0-9-]+)?$/index.PHP?section=$1 break;
    rewrite ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$/index.PHP?section=$1&go=$2 break;
    rewrite ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$/index.PHP?section=$1&go=$2&action=$3 break;
    rewrite ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$/index.PHP?section=$1&go=$2&action=$3&id=$4 break;

    try_files $uri $uri/ /index.PHP?$args;
}

但这似乎不起作用.这是否需要先放在位置块中?

我正在测试的URL如下.主机名已被删除,因为我不允许分享它.

http://www.example.com/entry
http://www.example.com/volunteers
http://www.example.com/contact

基本上,页面正在加载,就好像正在访问index.PHP一样,如果有意义,则不加载这些部分.似乎没有任何内容传递到index.PHP脚本中.

最佳答案
位置块是rewrite指令的通常位置,所以你做对了.

您的配置中唯一明显缺少的是正则表达式中的前导/中:

location / {
  rewrite ^/$/index.PHP break;
  rewrite ^/([A-Za-z0-9-]+)?$/index.PHP?section=$1 break;
  rewrite ^/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$/index.PHP?section=$1&go=$2 break;
 }
原文链接:https://www.f2er.com/nginx/435305.html

猜你在找的Nginx相关文章