[英]htaccess- unable to remove file extension from url php
我正在嘗試以下規則從文件名中刪除文件擴展名,但問題是它已被刪除,但是當我再次登錄時,它沒有重定向到我的主頁。
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase \
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/$ $1.php
謝謝
在重定向中,只需輸入不帶擴展名的頁面名稱即可。 header('Location:index'); 或redirect_user('index'); 並在您的.htaccess文件中使用下面的代碼。 現在瀏覽器上的鏈接將顯示為“ localhost / index”
RewriteEngine on
RewriteRule ^([^./]{3}[^.]*)$ /index.php?page=$1 [QSA,L]
我認為您的規則有些偏離。 您正在使用THE_REQUEST
將php擴展名重定向到非php擴展名,但是您在重寫器中未在%1
之后使用/
,因此,在讀取下一條規則時,它不匹配,因為只有在該規則中包含/
時,它才會內部重定向。 因此,可以在第二條規則的%1之后添加正斜杠,或者在最后一條規則中將反斜杠設置為可選。 我只是在最后一條規則中將其設置為可選,因此它將以任何一種方式匹配。
嘗試此更新,並查看其工作方式。
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ /([^&\ ]+).php [NC]
RewriteRule ^ /%1? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ $1.php [NC,L]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.