2012-07-27 107 views
1

我想在我的web服務器上實現一些非常簡單的事情。我希望以.php結尾的網址以/例如www.example.net/something.php結尾爲www.example.net/something或www.example.net/folder/subfolder/something.php爲www。 example.net/folder/subfolder/something。此外,我不介意我是否有www.example.net/folder/something.php?something=whatever/。我只關心刪除網址中的最後一個.php文件。我在其他許多人中使用過這些代碼。從url結尾刪除.php文件擴展名。

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule .*[^/]$ $0/ [L,R=301] 
RewriteRule (.*)/$ $1.php [L] 

但是,這隻適用於我的一些網頁。例如,它不起作用在我的www.example.com/folder/contactus.php頁面上。相反,我得到我的404頁面。但它完美的工作在www.example/folder/faq.php上。 此外,我做了一些file_get_contents()php請求在我的代碼的各個部分。有沒有什麼辦法來定製這些規則,以便內部請求(我的php函數)不受影響。基本上我只想讓瀏覽器在沒有.php結尾的情況下顯示url,而不會影響我在.php文件中保存的其他php函數。爲了進一步澄清我的意圖:我使用字符串處理函數從php文件中提取基於我設置的變量的特定行文本。但隨着當前重寫規則PHP文件不能我目前使用一個共享的godaddy的主機帳戶Linux服務器被發現,因爲擴展已經被從文件名中去除(即時猜測。

$file_contents = file_get_contents($filename); 

回答

0

我認爲你需要的PHP檢查適用於這兩個規則:

RewriteCond %{REQUEST_URI} ^(.*)/$ 
RewriteCond %{DOCUMENT_ROOT}%1.php -f 
RewriteRule (.*)/$ $1.php [L] 

RewriteCond {REQUEST_FILENAME}.php -f 
RewriteRule .*[^/]$ $0/ [L,R=301] 

此外,-f檢查需要但沒有尾隨到進行削減

+0

它仍然表現怪異。首先,內部的PHP腳本和函數調用保持不變。太棒了。然而,它仍然這樣做 'http://www.sitename.net/folder/something.php到http:// www.sitename.net/folder/something.php' 和在同一目錄中的其他文件 'http://www.sitename.net/folder/something.php到http:// www.sitename.net /文件夾/東西/' 奇怪的是,其中一個頁面沒有這個'http://www.sitename。 net/var/chroot/home/content/37/9179448/html/control/something'這會導致我的404頁面。你上面的確切代碼是我使用的原因。 – jmreader 2012-07-28 05:25:45

0

釷以下按照需要工作,雖然我的一個網頁使用請求失敗。我只是把它改成了發佈請求,一切都很好。

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{THE_REQUEST} ^GET\ /([^.\ ]+\.)+php(\?[^\ ]*)?\ HTTP 
RewriteRule ^(.+)\.php$ http://www.sitename.net/$1 [R=301,L] 
RewriteRule ^([^/]+/)*index/?$ http://www.sitename.net/$1 [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ http://www.sitename.net/$1 [R=301,L] 
RewriteCond $1 !^([^.]+\.)+([a-z0-9]+)$ [NC] 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*[^/])$ /$1.php [L] 
RewriteRule (.*)/$ $1.php [L] 

仍然存在一個小問題。一些頁面追加了斜線,而另一些則不是。任何線索強迫尾隨斜線?

+0

我有一個主要問題。我所有的POST表單提交都會返回404頁面。出於某種原因,我無法解決提交表單的問題。 – jmreader 2012-08-28 13:30:38