Nginx не перенаправляет с перезаписью
У меня nginx + php на Windows Server настроен. Я работаю на основе MVC с переписыванием URL, проблема в том, что мой сервер не разрешает адреса. Проще говоря, это мой код:
server {
listen 127.0.0.1:80;
server_name localhost/kuimbi;
root www/kuimbi;
index index.php;
location / {
if (!-e $request_filename){
rewrite ^(.+)$ /index.php?url=$1 break;
}
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico|swf|flv|woff)$ {
access_log off;
expires 9d;
}
location ~* ^.+\.(css|js)$ {
access_log off;
expires 1d;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9100;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
access_log logs/access.log main;
}
И в Apache у меня есть эквивалентный код:
Options -MultiViews
RewriteEngine On
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
1 ответ
Предполагая, что ваши запросы выглядят как http://localhost/kuimbi/*
Вы неправильно настроили server_name
,
Он не должен содержать URI, только доменные имена.
Таким образом, ваша конфигурация должна выглядеть следующим образом:
server {
listen 127.0.0.1:80;
server_name localhost;
root www/kuimbi;
location ~ ^/kuimbi/(.*)$ {
try_files /www/kuimbi/$1 /index.php?url=/$1;
}
...
}