繁体   English   中英

.htaccess到nginx.conf重写规则

[英].htaccess to nginx.conf Rewrite rules

我正在从.htaccess切换到nginx.conf,但在将这些行转换为nginx时遇到了麻烦:

RewriteBase /
RewriteCond $1 !^(index\.php|assets|uploads|fav.ico)
RewriteRule ^(.*)$ index.php/$1 [L]

我尝试了这个:

if ($1 !~ "^(index\.php|assets|uploads|fav.ico)"){
       set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
       rewrite ^/(.*)$ /index.php/$1 last;
}

和这个:

location /$ {
    index       index.php;
    # Removes index.php from URLs
    rewrite_log on;
    if (!-e $request_filename) {
      rewrite ^/(.*)$ /index.php/$1 last;
    }
}

但无济于事:(。我在做什么错?

谢谢。

尝试翻译这段代码。

RewriteBase /
RewriteRule ^(index\.php|assets|uploads|fav.ico) - [L]
RewriteRule ^(.*)$ index.php/$1 [L]

您遇到的问题是因为apache首先在RewriteCond之前执行RewriteRule。 您的nginx代码是按顺序运行的,因此当您读出它时,尚未设置$ 1。

我不了解nginx,但我认为如果您翻译上述内容,可能会得到以下结果:

rewrite ^/(index\.php|assets|uploads|fav.ico) - last
rewrite ^/(.*)$ /index.php/$1 last;

要不然

rewrite ^/(index\.php|assets|uploads|fav.ico).*$ $0 last
rewrite ^/(.*)$ /index.php/$1 last;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM