2015-05-04 124 views
1

我在嘗試從文件名中刪除文件擴展名,但問題在於它顯示刪除了它,但是當我再次登錄時,它不會重定向到我的主頁。htaccess-無法從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 

謝謝

+0

你在瀏覽器的位置輸入了什麼網址? – starkeen

+0

www.example.com/homePage.php – Aisha

+1

爲什麼在RewriteBase指令中使用反斜槓? – starkeen

回答

1

在您重定向只是不帶擴展名,例如,輸入頁面名稱。 header('Location:index');redirect_user('index');並在你的.htaccess文件中使用下面的代碼。現在瀏覽器上的鏈接將被稱爲「本地主機/索引」

RewriteEngine on 
RewriteRule ^([^./]{3}[^.]*)$ /index.php?page=$1 [QSA,L] 
1

我認爲你的規則只是一點點關閉。您正在使用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] 
+0

它不工作....我無法登錄時,我使用這些規則 – Aisha

+0

你能更具體一點?我們不知道你的設置如何。你是什​​麼意思,它不工作?你有錯誤嗎?還有什麼是您使用的EXACT網址?你是什​​麼意思,你不能登錄?怎麼了? –