【问题标题】:Convert .htaccess to nginx rewrite rule将 .htaccess 转换为 nginx 重写规则
【发布时间】:2014-05-24 07:09:40
【问题描述】:

我正在尝试将以下 (PHPVibe) .htaccess 规则转换为 gninx:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^embed/([^/]*)/$ /embed.php?id=$1 [L]
RewriteRule ^feed(.*)$ feed.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?rp=$1 [L]
</IfModule>
<ifModule mod_headers.c>
    Header set Access-Control-Allow-Origin: *
</ifModule>

这是我目前所拥有的:

    rewrite ^/embed/([^/]*)/$ /embed.php?id=$1 last;
    rewrite ^/feed(.*)$ /feed.php last;
if (!-f $request_filename){
    set $rule_2 1$rule_2;
}
if (!-d $request_filename){
    set $rule_2 2$rule_2;
}
if ($rule_2 = "21"){
    rewrite ^/(.*)/?$ /index.php?rp=$1 last;
}

上述方法大部分都有效,除了它在我的非 mod_rewrite 依赖页面上返回 404。

【问题讨论】:

    标签: .htaccess mod-rewrite nginx


    【解决方案1】:

    尝试在其他 RewriteRules 之前插入以下代码

    RewriteRule ^moderator - [NC]
    

    它应该会导致重写引擎跳过任何以 /moderator/ 开头的 URL

    【讨论】:

    • 但这是一个 .htaccess 规则。我试图将上述规则转换为 nginx。没有必要在 htaccess 规则中包含排除标准,但对于 nginx 似乎有必要,这是我需要帮助的地方。
    【解决方案2】:
    location / {
        try_files $uri $uri/ @index;
    }
    
    location /embed/ {
        rewrite ^/embed/([^/]+)/$ /embed.php?id=$1;
    }
    
    location /feed {
        rewrite ^ /feed.php;
    }
    
    location @index {
        rewrite ^/(.*)/?$ /index.php?rp=$1;
    }
    
    location ~ \.php$ {
        # fastcgi directives
    }
    

    【讨论】:

    • 这会导致 gnix 配置错误,而且似乎没有解决排除“/moderator”目录的主要问题。
    • 有一个错字。它只是不包括主持人目录。你没有说如何处理版主目录
    • 我只是希望重写规则明确排除它,因为它返回 404 和原始规则。顺便说一句,它仍然无法正常工作。它现在会导致 php 代码下载。我的版本没有问题。我只是希望能够排除版主文件夹。
    • 看起来错误不完全是关于排除目录。我猜整个语法很糟糕。有什么方法可以对您建议的版本进行一些调整以使其正常工作,而不必排除“版主”?
    【解决方案3】:

    所以,经过一些调整,我终于找到了适用于 nginx 的正确重写指令。万一有人想知道。

        rewrite ^/embed/([^/]*)/$ /embed.php?id=$1 last;
        rewrite ^/feed(.*)$ /feed.php last;
    if (!-e $request_filename)
        {
            rewrite ^/(.*)/?$ /index.php?rp=$1 last;
        }
    

    【讨论】:

      猜你喜欢
      • 2014-06-30
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2021-04-04
      • 1970-01-01
      • 2015-02-17
      • 2017-07-15
      相关资源
      最近更新 更多