2011-07-19 51 views
2

我現在有一個頁面沒有任何一個擴展的Movable Type博客HTML ...所以example.com/entries/this-is-my-entryPHP在沒有文件擴展名

我加DefaultType text/html如此Apache知道是否沒有擴展名的文件末尾顯示爲HTML。這很好。

現在的問題是我有PHP代碼在HTML中。如果沒有擴展名,頁面將不會呈現php代碼。但是,當我發佈帶有.html擴展名的條目時......這些php完美無缺。

我有AddHandler php5-script .html告訴apache在html文件中顯示php。我猜如果沒有文件擴展名,它不知道要渲染的PHP,因爲它期望擴展名爲.html的文件...有沒有辦法說任何沒有擴展名的文件可以使用PHP ?

+2

您應該_always_向文件添加擴展名。如果您想要省略擴展名的網址,請使用'mod_rewrite'。 – KingCrunch

+1

@KingCrunch爲什麼文件沒有擴展名是不好的?缺點是什麼?根據[W3C](http://www.w3.org/Provider/Style/URI):「省略什麼 - 文件擴展名。這是一個很常見的問題。 「cgi」,甚至「.html」都會改變。 20年後,您可能不會使用該網頁的HTML,但您可能希望今天的鏈接仍然有效。鏈接到W3C網站的規範方式不使用擴展名。(當然,他們仍然可以談論使用重寫,但保留實際文件名稱的擴展名)。 – chown

+0

@chown我說的是(物理)文件,而不是瀏覽器地址欄中顯示的內容。 – KingCrunch

回答

0

沒有什麼直接對應DefaultTypeAddHandler是的,但你可以在一個相當醜陋的方式圍繞它破解:

<FilesMatch "^(?!.*\..+)"> 
    SetHandler php5-script 
</FilesMatch> 
1

也許你可以嘗試使用<FileMatch>指令?類似於

<FilesMatch "^[^\.]$"> 
    ForceType application/x-httpd-php 
</FilesMatch> 
+1

這隻會匹配名稱由單個字符組成的文件(如果該字符不是'.')。添加一個'+'來匹配沒有句點的可變長度的文件名,如下所示:'^[^ \。] + $「>' – chown

4

我正在爲我的個人MT博客做相同的實現,條目沒有文件擴展名。

:(該理論是,我可以切換到在未來的其他技術不被喜歡的.html,.PHP等擴展受到阻礙)

您可以通過設置您的默認類型爲PHP實現這一目標DefaultType application/x-httpd-php

所有的PHP文件最初都被解釋爲HTML,所以即使對於沒有PHP的文件也可以。