2012-09-15 93 views
0

我一直在努力擺脫.php從我的網站。我希望它看起來像example.com/about而不是example.com/about.php。我有它會重寫它,所以我可以鍵入它作爲example.com/about,但我希望它是當我點擊我的網站上的鏈接去example.com/about它加載網址爲例.com/about和not example.com/about.php。總的來說,我希望它能夠在有人在我的頁面上加載任何東西時,網址的末尾沒有.php文件。我的.htaccess現在看起來像這樣,信息與mod_rewrite .htaccess

RewriteEngine on 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([^/]+)/$ $1.php 

謝謝。

回答

0

試試這個:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

你不會有改變你的網站的結構,因爲它簡單地指標「畸形」在「http://x.com/page」形式的URI沒有擴展名最後。希望我幫助!

0

,但我想它,當我在我的網站上點擊鏈接去example.com/about它是加載的網址爲example.com/about而不是example.com/about.php

要解決該問題,您需要將鏈接從您的網站從example.com/about.php更改爲example.com/about。您仍然可以在「無所事事」的鏈接指向.php網址時執行重定向,但除非您更改網站上的鏈接以刪除該擴展程序,否則會導致每次加載網頁都會將您的服務器重擊兩次。

至於重定向:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.+)\.php[\?\ ] 
RewriteRule^/%1/ [L,R=301] 

我不知道如何你的規則把PHP擴展背部甚至工作,因爲你匹配一個尾隨斜線,但是當你檢查與文件-f,你的文件名會有一個斜線:例如:的/some/path/to/the_file/.php代替/some/path/to/the_file.php

嘗試:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^/(.+?)/? 
RewriteCond %{DOCUMENT_ROOT}/%1.php -f 
RewriteRule^/%1.php [L]