从.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=

我将一些.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;
 }

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部