Эта строка:
location ~ ^/index.php($|/) {
говорит nginx передать только index.php
интерпретатору php, и вам нужно, чтобы он также применялся к другим файлам php, поэтому здесь требуется более общее правило:
location ~ ^/(.*).php($|/) {
Я пытаюсь переписать определенный путь, используя nginx. Я настроил свой сервер, используя nginx / php-fpm / php, и он работает нормально.
У меня есть следующая конфигурация сервера:
server { listen 80; server_name domain.com; root /srv/www/domain.com/public; location ~ ^/index.php($|/) { fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } location / { index index.php; try_files $uri /index.php?$args; } }
И это работает. Т.е. когда я захожу на http://domain.com
него, файл php отрисовывается просто отлично. Однако сейчас я пытаюсь переписать конкретный путь /update/whatever
к /update.php?var=whatever
. Для этого я добавил следующий location
блок в мою конфигурацию (перед location ~ ^/index.php($|/) {
блоком):
location ~* ^\/update/(\w+)$ { rewrite ^/update/(\w+)$ /update.php?browser=$1 last; }
Но когда я пытаюсь получить доступ к URL-адресу, http://domain.com/update/whatever
он загружает файл php, а не обрабатывает анализируемый вывод PHP.
Я также попытался добавить fastcgi
директивы в этот блок с тем же результатом. Кто-нибудь может сказать мне, что я испортил в моей конфигурации?
Эта строка:
location ~ ^/index.php($|/) {
говорит nginx передать только index.php
интерпретатору php, и вам нужно, чтобы он также применялся к другим файлам php, поэтому здесь требуется более общее правило:
location ~ ^/(.*).php($|/) {