使用NginX和Laravel:URL重写

我试图在运行CentOS 6.4和NginX 1.8的VPS上设置Laravel框架。 除了使用“website.com/home”而不是“website.com/index.php/home”,我无法获得更清晰的url。 谁能帮忙? 这是目前我的虚拟主机configuration文件的内容。

server { listen 80; server_name swati.havok.semicolony.com; access_log /usr/share/nginx/semicolony.com/_subdomains/swati/storage/logs/access.log; error_log /usr/share/nginx/semicolony.com/_subdomains/swati/storage/logs/errors.log; root /usr/share/nginx/semicolony.com/_subdomains/swati/public; index index.php; #browse folders if no index file autoindex on; # enforce NO www if ($host ~* ^www\.(.*)) { set $host_without_www $1; rewrite ^/(.*)$ $scheme://$host_without_www/$1 permanent; } # serve static files directly location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off; #expires max; } # removes trailing slashes (prevents SEO duplicate content issues) if (!-d $request_filename) { rewrite ^/(.+)/$ /$1 permanent; } # removes trailing "index" from all controllers if ($request_uri ~* index/?$) { rewrite ^/(.*)/index/?$ /$1 permanent; } # unless the request is for a valid file (image, js, css, etc.), send to bootstrap if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?/$1 last; break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ \.php$ { root /usr/share/nginx/semicolony.com/_subdomains/swati/public; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } 

编辑:我使用Laravel 4可能很重要。

我对Nginx不是很熟,但是我认为你的rewrite是不正确的。

尝试改变

rewrite ^/(.*)$ /index.php?/$1 last;

至:

rewrite ^/(.*)$ /index.php/$1 last;

要么:

rewrite ^.*$ /index.php last;

这里是我的nginx / Laravel配置(Debian in Linode):

 # Laravel 4 nginx configuration server { server_name www.yourdomain.com; access_log /var/www/yourdomain.com/log/access.log; error_log /var/www/yourdomain.com/log/error.log; root /var/www/yourdomain.com/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { # With php5-fpm: include /opt/nginx/conf/fastcgi_params; #Here you need to point your nginx instalation directory fastcgi_pass unix:/var/run/php5-fpm.sock; #Use this config if you are using sock or use fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }