【问题标题】:Apache mod_rewrite to NginX rewrite help pleaseApache mod_rewrite 到 NginX 重写请帮助
【发布时间】:2013-09-13 05:34:03
【问题描述】:

我使用在线转换器将以下 Apache mod_rewrite 转换为 NginX 重写:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1 [R=301,L]

输出如下所示:

  if (!-f $request_filename){
        set $rule_0 1$rule_0;
}
if (!-d $request_filename){
        set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
        rewrite /. /index.php last;
}
if ($http_host ~* "^www.(.*)$"){
        set $rule_1 1$rule_1;
        set $bref_1 $1;
}
if ($rule_1 = "1"){
        rewrite ^/(.*)$ http://$bref_1 permanent;
}

虽然转换在添加到 vhosts 文件时有效,但有人向我指出转换很差,而且http://docs.ngx.cc/en/latest/topics/depth/ifisevil.html

有人可以帮我进行“正确”转换吗?

谢谢。

【问题讨论】:

    标签: nginx rewrite


    【解决方案1】:

    这大部分应该可以解决问题,问题在于你想要传递给index.php的确切内容

    server {
        server_name example.com;
        root /path/to/www;
        location / {
            try_files $uri $uri/ /index.php$request_uri
        }
    }
    server {
        server_name www.example.com;
        return 301 example.com;
    }
    

    【讨论】:

    • 感谢您的回复。我尝试了重写,但恐怕它对我不起作用。此外,我正在寻找一种可以与任何域一起使用的重写,而不必指定一个..
    猜你喜欢
    • 2021-07-15
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多