2008-10-08 80 views

回答

6

我會這樣做。基本上,如果文件不存在,請嘗試添加.php。

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

喜歡的東西...

RewriteRule /something/(.+)?(.+) /something/$1.php?$2 

可能會工作。

+0

這似乎並不奏效。 – dreeves 2008-10-08 17:41:31

+0

您可能需要用反斜槓來跳過問號 – 2008-10-08 19:52:29

+0

我試過了。我認爲查詢字符串的東西不是在RewriteRule中匹配的東西的一部分。您必須在查詢字符串上執行單獨的RewriteCond。看到我的答案。 – dreeves 2008-10-10 02:11:36

1

這工作:

RewriteCond %{QUERY_STRING} ^.+$ 
RewriteRule ^/?([^/\.]+)$ /$1.php [L] 

這樣做是爲了確保有一個查詢字符串(問號加的東西),如果是檢查問號之前的東西沒有擴展名,如果是這樣,追加。 PHP。

1

如果你可以改變的httpd.conf和什麼,你也可以把:

ForceType application/x-httpd-php 

在該文件中,因爲它會迫使所有的所謂的被PHP文件的路徑。我認爲這也適用於查詢字符串。

0

只匹配不帶擴展名路徑:

RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php 

編輯:在我的測試中,查詢字符串被自動傳遞。如果沒有,你可以用這個代替:

RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1