2011-12-23 19 views
0

我已經在這個計算器讀到這裏超過3個問題,但它們都具有的以下問題之一:如何打開的* .htm爲* .PHP htaccess的

  • 它重定向PHP來HTM (未找到出現時,我已經有到位的PHP文件)
  • 當您鍵入的* .htm,它會被重定向到* .PHP(我希望觀衆看到的* .htm不* .PHP)

讓我把它歸結爲你們:我需要鍵入index.htm和Apache重定向到.php,但在地址欄中我仍然想看到.htm不是.php

任何幫助或建議,將不勝感激。

+0

@ziesemer這將導致重定向。 – alexn 2011-12-23 07:32:41

回答

1
RewriteEngine on 
RewriteRule ([^/]*)\.htm$ $1.php [PT] 

請檢查http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule所有的可用選項,包括你可能要包括其他標誌 - 如QSA

請注意,RewriteEngine on行(以及Options FollowSymLinks - 請參閱上面鏈接的文檔)是必要的,如果您還沒有在別處。您可能還需要在主Apache配置中使用AllowOverride FileInfo以啓用.htaccess文件。

請注意,PT標誌不是嚴格必要的,因爲如果Apache確定它可以在沒有重定向的情況下完成請求,則它是缺省設置。

這裏是另一個結果,我剛剛從谷歌搜索發現,顯示幾乎同樣的事情,我在這裏描述:(具體說明各地的.htm一些規則 - > .PHP翻譯)http://corz.org/serv/tricks/htaccess2.php

+0

正如我所說的,它不應該在地址欄中將php轉換爲html,當然我會得到「Object not found」錯誤 – ALH 2011-12-23 07:40:07

+0

這不會重定向瀏覽器。 'PT'將通過請求引導Apache到代理,所以如果配置正確,對.htm的請求將實際顯示相應的.php。 – ziesemer 2011-12-23 07:42:31

+0

看來我需要重新啓動我的服務器,即使刪除htaccess我仍然得到重定向,也許有什麼一直留在緩存! tnx @ziesemer – ALH 2011-12-23 07:51:52

0

喜這很容易完成:在你的.htaccess中,你將有這樣的重定向:

RewriteRule ^(.*).htm$  $1.php [QSA] 
RewriteRule ^(.*).html$  $1.php [QSA] 
+0

如果你想匹配'htm'和'html',使用'html?',而不是'html *',否則你也會匹配'htmllllll'。 '.html'中的'.'需要被轉義。您還應該添加尾隨的'$',或者這也可以匹配URL中任何地方包含'html' **的任何內容**。 – ziesemer 2011-12-23 07:38:38

+0

長夜:)修復。 – 2011-12-23 07:40:20

+0

儘管您應該將QSA添加到您的答案中。 – 2011-12-23 07:41:27