我試圖洗掉.php擴展名并/像普通網站一樣添加一個。例子http://example.com/category/。
我.htaccess用來洗掉.php. 這是代碼:
RewriteEngine On
RewriteBase /
# hide .php extension snippet
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.] )\.php [NC]
RewriteRule ^ %1/ [R,L]
# add a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]
這段代碼完成了它的任務。它洗掉.php并添加/,但 PHP 頁面現在沒有加載。
這是截圖(檔案名test.php):

如何解決這個問題?
uj5u.com熱心網友回復:
這是因為您缺少一個內部規則來.php靜默添加到此類重定向 URI。
您可以在最后添加此規則以進行該處理:
RewriteEngine On
RewriteBase /
# hide .php extension snippet
RewriteCond %{THE_REQUEST} \s/ (. ?)\.php[\s?] [NC]
RewriteRule ^ /%1/ [R=301,NE,L]
# add a trailing slash if needed
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(. ?)/$ $1.php [L]
uj5u.com熱心網友回復:
經過一些研究,在我的案例中實際有效,如下所示。
它洗掉.php擴展名并/在 URL 末尾添加。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/] )/$ $1.php
RewriteRule ^([^/] )/([^/] )/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
輸出:

參考:https ://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/426047.html
