我正在嘗試使用 nginx 設定我的第一個網站,但我似乎無法使無擴展的 php 頁面正常工作。我希望我的頁面/aboutme.php
顯示為/aboutme
或者我只想將我的網址更改為/aboutme
而不是/aboutme.php
並使它們起作用。我設法透過.htaccess
以下編輯使最後一個場景在 CPanel 託管上工作:
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未找到”,如果我訪問“/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;
}
}
答案1
您可以嘗試使用以下內容:
location / {
try_files $uri $uri.php $uri/ =404;
index index.html index.htm index.php;
}
您還應該檢查目錄所有者/存取權限,並查看使用者 nginx 和 php-fpm 運行時(在 nginx 配置中定義)是否可以存取這些目錄。