Я использую nginx для перезаписи URL-адреса, например http://www.sample.com/application
- http://www.sample.com/index.php/application
правило перезаписи
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 break;
}
Моя конфигурация fastcgi
location ~ \index.php {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Но правило перезаписи не работает.
И я просматриваю http://www.sample.com/index.php/application
тоже не работает. /application
не переходит в index.php
Что с этим не так?
Если вы break
правило rewrite
, контекст местоположения остается неизменным. Вы должны использовать last
не break
, так что ваше местоположение FastCGI в конце концов нашли.
Кроме того, у вас избыточная обратная косая черта в правиле regex. Вероятно, это должно быть:
location ~ ^/index.php { ... }
index.php
получает аргумент, зависит от того, что вы поместили вfastcgi_params
. В любом случае он получит/application
как часть REQUEST_URI, но если вы хотите добавить параметр PATH_INFO, вам может потребоваться добавить свой собственныйfastcgi_param
См. Nginx.com/resources/wiki/start/topics/examples/phpfcgi