0

我试图转换以下 .htaccess 规则

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{HTTP_HOST} ^([^.]+\.[^.]+|[^.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ /index.php?type=%1&b=$1&%{QUERY_STRING}  [L]

使用 nginx .htaccess 转换器我最终得到了这个:

if ($http_host ~ "^www\.domain\.com$"){
    set $rule_0 1;
}

if ($rule_0 = "1"){
    rewrite ^/(.*)$ http://domain.bg/$1 permanent;
}

if (!-f $request_filename){
    set $rule_1 1$rule_1;
}

if ($http_host ~* "^([^.]+\.[^.]+|[^.]+)\.domain\.com$"){
    set $rule_1 2$rule_1;
    set $bref_1_0 $1;
}

if ($rule_1 = "21"){
    rewrite ^/(.*)$ /index.php?type=${bref_1_0}&b=$1&$args last;
}

但它不工作。有人可以帮忙吗?

4

1 回答 1

0

喜欢那些生成器如何生成奇怪的长而难以理解的东西,第一部分是 www 到非 www 的重定向,这很容易

server {
    server_name www.example.com;
    return 301 example.com;
}

我不确定这部分,但你可以试试

server {
    server_name ~^(?<subs>[^.]+(?:\.[^.]+)?)\.example\.com;
    rewrite ^ /index.php?type=%1&b=$subs&$args last;
}

希望它有效

于 2013-10-08T18:39:15.880 回答