Here is the rule in English:
Any HTTP request other than those related to index.php, the resource folder, the file folder, and the robots.txt file is considered a request for your index.php file.
I have a .htaccess file that works correctly on an Apache server:
RewriteCond $1 !^(index\.php|assets|files|robots\.txt) RewriteRule ^(.*)$ index.php/$1 [L]
Some correct results for this rule:
example.com = example.com/index.php
example.com/index.php/welcome = example.com/welcome
example.com/assets/css/main.css ! = example.com/index.php/assets/css/main.css
I tried some conversion tools from the htaccess rule to the nginx rule, but all were incorrect.
Via http://winginx.com/htaccess (there is no exclusion rule for the resource folder ...):
location / { rewrite ^(.*)$ /index.php/$1 break; }
Via http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ (error in the value of $ 1):
if ($1 !~ "^(index.php|assets|files|robots.txt)"){ set $rule_0 1$rule_0; } if ($rule_0 = "1"){ rewrite ^/(.*)$ /index.php/$1 last; }
How can i fix this? Itβs very difficult to debug a rule.
Here is my nginx configuration:
server { listen 80; server_name www.example.com example.com; location / { try_files $uri $uri/ /index.php?/$request_uri; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }