перезапись nginx не заканчивается расширением .php

1

Я использую 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

Что с этим не так?

Теги:
nginx
.htaccess
url-rewriting

1 ответ

0

Если вы break правило rewrite, контекст местоположения остается неизменным. Вы должны использовать last не break, так что ваше местоположение FastCGI в конце концов нашли.

Кроме того, у вас избыточная обратная косая черта в правиле regex. Вероятно, это должно быть:

location ~ ^/index.php { ... } 
  • 0
    извините. это не работает. не передавая аргумент / application в index.php.
  • 0
    @Magic Я проверил это, и оно работает. То, как ваш index.php получает аргумент, зависит от того, что вы поместили в fastcgi_params . В любом случае он получит /application как часть REQUEST_URI, но если вы хотите добавить параметр PATH_INFO, вам может потребоваться добавить свой собственный fastcgi_param См. Nginx.com/resources/wiki/start/topics/examples/phpfcgi

Ещё вопросы

Сообщество Overcoder
Наверх
Меню