Переписать определенный путь в xginx

1559
PeeHaa

Я пытаюсь переписать определенный путь, используя 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директивы в этот блок с тем же результатом. Кто-нибудь может сказать мне, что я испортил в моей конфигурации?

0

1 ответ на вопрос

1
dev-null-dweller

Эта строка:

location ~ ^/index.php($|/) { 

говорит nginx передать только index.phpинтерпретатору php, и вам нужно, чтобы он также применялся к другим файлам php, поэтому здесь требуется более общее правило:

location ~ ^/(.*).php($|/) { 

Похожие вопросы