我正在尝试使用通常在nginx上运行Apache的内部框架。我一直没有转换htaccess的运气。
我试过http://www.anilcetin.com/convert-apache-htaccess-to-nginx/但没有用。然后我自己去做(提出不同的规则),但这也不起作用。这是我现在拥有的:
index index.php;
location / {
if ( !-e $request_filename ) {
rewrite ^(.*)$ /index.php?$1 last;
break;
}
rewrite ^/$ /? last;
}
location ~ ^/(assets|robots\.txt|favicon\.ico|license.txt) {
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
我试图转换的htaccess是:
DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico|license.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
RewriteCond %{QUERY_STRING} .
RewriteRule ^$ /? [L]
有人会碰巧知道什么是错的或我应该做什么吗?
谢谢!
答案 0 :(得分:0)
你几乎不应该在Nginx配置中使用if。试试这个 -
location / {
try_files $uri /index.php;
}
其余部分不会重写某些文件,因此不需要长丑陋的正则表达式位置块。