我从.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;
}
}
但没有工作:(。我做错了什么?
谢谢。
答案 0 :(得分:0)
尝试翻译这段代码。
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;