У меня есть приложение php под /path/
все, что не существует (файлы / каталоги), должно быть перенаправлено на /path/index.php
if (!-e $request_filename)
{
rewrite ^/path/(.+)$ /path/index.php last;
}
и все работает отдельно от реальных файлов, по некоторым причинам .css-файлы, которые существуют, все еще перенаправляются в индекс ... например, /path/CSS/style.css
UPDATE
исправлено с помощью rewrite ^/path/(.+)/$ /path/index.php last;
, потому что все мои URL, которые нужно переписать, заканчиваются косой чертой, но все еще сбивают с толку
nginx.conf
http {
include /etc/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
полный сайт включен / файл
server {
listen valueyourvote.org.nz:80;
server_name valueyourvote.org.nz valueyourvote.co.nz;
if ($http_host != www.valueyourvote.org.nz) {
rewrite (.*) http://www.valueyourvote.org.nz$1;
}
access_log /var/log/nginx/valueyourvote.org.nz.access.log;
error_log /var/log/nginx/valueyourvote.org.nz.error.log;
location / {
root /var/www/vote.incode.co.nz/;
index index.php index.html index.htm;
}
if (!-e $request_filename)
{
rewrite ^/supercity-2010/(.+)/$ /supercity-2010/index.php last;
}
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
fastcgi_pass localhost:9000;
fastcgi_index index.php;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}