Скажем, у меня есть файл с именем careers.php
, как я служу этот файл при нажатии на ссылку, которая идет в http://example.com/careers
без расширения файла для обоего .html
и .php
файлов с Nginx?Как удалить расширение файла из URL-адресов в nginx?
Обратите внимание, что решение должно учитывать строки запроса. Например, URL-адрес может быть
http://example.com/careers?lang=fr
.Кроме того, я хотел бы, чтобы решение также попробовало подкаталоги. Например; если моя структура папок на сервере
/views/careers.php
, я хочу, чтобыhttp://example.com/careers
все еще служил/views/careers.php
.
Моя текущая конфигурация выглядит следующим образом:
server {
listen 80 default_server;
root /usr/share/nginx/landing-page;
index index.php index.html;
server_name example.com;
location/{
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Будет ли 'try_files $ uril $ uri.php /views/$uri.php $ uri/= 404;' работать для моей второй точки? Кроме того, это позволит использовать строки запроса? –
@EdwardMaxedon да, строки запроса не будут затронуты. Для второй точки учтите, что '$ uri' будет содержать ведущую косую черту – Vasfed
Я заметил теперь вместо обработки файла как .php-файл, он загружается, когда я посещаю страницу. Требуется также обновление блока 'location ~ \ .php $'? –