加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

从.htaccess转换nginx规则

发布时间:2020-12-13 21:14:46 所属栏目: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=$1go=$2 [L]RewriteRule ^([A-Za-z0-9-]+)/([A

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读