2013-06-11 140 views
4

我正在四處尋找重複項目,但我無法找到我認爲應該是一個簡單的答案。htaccess添加.php到沒有擴展名的所有東西

什麼是將.php添加到沒有擴展名的任何重寫規則?

例子:

www.website.com/styles.css - > www.website.com/styles.css

www.website.com/login - > www.website.com/login .php

謝謝!

+0

在什麼情況下你想這樣做?這些鏈接是否在文件中?他們是否在動態生成的網頁中? – IanPudney

+0

沒有什麼奇特的。我網站上的所有網頁都是php腳本,我只想使用漂亮的網址。我現在對我的網站上的每一個頁面都有一個規則,因爲我不知道簡單的方法:對於每一個我擁有的頁面,都有'RewriteRule^login $ login.php [L]'...我希望用戶能夠鍵入/登錄並獲得完整的login.php頁面 – pinhead

回答

7

下可滿足您的需求:

RewriteEngine On 
RewriteBase/

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

這將擴展名.php自動添加到文件名不帶擴展名。它可能會嘗試將something.css重命名爲something.css.php,但只有在存在something.css.php時纔會這樣做。

+0

,謝謝 – pinhead

+0

我該如何將此與「CheckSpelling」結合來添加不區分大小寫?我在嘗試,但失敗! – pinhead

+0

我不知道答案 - 我建議提出另一個問題,以徵求更多答覆。 – IanPudney

2

要通過@quinxorin擴大答案,您還可以執行以下操作。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteCond %{REQUEST_FILENAME}\.php ^(.*)\.php(.*)$ 
RewriteRule .* %1.php?%2 [QSA] 

這會將url的其餘部分追加到結果中。即/page/1234變成/page.php?1234