Я пытаюсь создать свой первый веб-сайт с помощью nginx, и мне кажется, что мне не удается заставить работать php-страницы без расширений. Я бы хотел, чтобы мои страницы нравились /aboutme.php
появиться как /aboutme
или Я просто хочу изменить свои URL-адреса на /aboutme
вместо того /aboutme.php
и заставить их работать. Мне удалось заставить работать последний сценарий на хостинге CPanel путем редактирования .htaccess
как это:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]
Однако, если я конвертирую .htaccess
код для nginx с помощью онлайн-инструментов, он не работает. Я также пытался отредактировать свой nginx.conf
с участием try_files
и extensionless-php
безуспешно, я получаю 404. Моя равнина nginx.conf
без try_files
и extensionless-php
выглядит так:
server {
listen localhost:8081;
server_name mywebsite.com; # I use my website here
root /usr/share/nginx/web/website1;
location / {
root /usr/share/nginx/web/website1;
index index.php index.html index.htm;
}
location ~ \.php$ {
root /usr/share/nginx/web/website1;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Изменить: мой вопрос был помечен как дубликат, поэтому я попытался настроить его, как было сказано, безуспешно, если я захожу в '/ aboutme', я получаю '404 not found', если я посещаю '/aboutme.php', это открыт как '/aboutme.php' с '.php':
server {
listen localhost:8081;
server_name mywebsite.com;
root /usr/share/nginx/web/website1;
location / {
try_files $uri $uri/ @extensionless-php;
index index.html index.htm index.php;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
}
Вы можете попробовать использовать следующее:
location / {
try_files $uri $uri.php $uri/ =404;
index index.html index.htm index.php;
}
Вы также должны проверить права доступа / владельца каталога и посмотреть, работает ли пользователь nginx и php-fpm как (определено в конфигурации nginx) может получить доступ к этим каталогам.