2010-05-30 52 views
0

我有一個htaccess的問題。Apache .htaccess

我的目錄結構是這樣的:

/ 
HEADER.html 
README.html 
/stackoverflow/ 
/stackoverflow/.htaccess 

的.htaccess

ServerSignature Off 
Options +Indexes 
HeaderName /HEADER.html 
IndexIgnore HEADER.html 
ReadmeName /README.html 
IndexIgnore /README.html 
IndexOptions +FancyIndexing 
AddCharset UTF-8 .txt 
IndexIgnore *.xml 
IndexIgnore *.php 

我的主要目錄是/計算器/,當我通過瀏覽器瀏覽到該目錄我已經包含了header.html和README.html在/ stackoverflow /下的每個站點/目錄下,這工作正常。

我添加了一些PHP代碼我header.html中(這是在根目錄/),我嘗試添加到htaccess的:

將AddType應用/ X的httpd - PHP的.html .PHP的.htm

這不工作,我想是因爲HEADER.html是在根。

如果我嘗試將AddType ...添加到/.htaccess(而不是/stackoverflow/.htaccess),它將覆蓋我的/stackoverflow/.htaccess規則。爲什麼?如何將AddType規則添加到我的/stackoverflow/.htaccess中,以便將Apache文件解析爲php文件?

回答

2

您的PHP解析器將會忽略.html文件的設計。 .html應呈現不處理,如果你想添加額外的邏輯到你的頭文件,你必須將其轉換爲.phtml.php。你也可以創建一個新的頭文件,然後只包含html。

關於.htaccess重寫的問題,這是Apache的mod_rewrite的工作原理。這是一個分層系統,它會加載它從遇到的所有文件開始的第一個文件。

0
HeaderName /HEADER.php 
AddType text/html .php 
<Files "*.php"> 
    AddHandler application/x-httpd-php .php 
</Files> 
0

.htaccess文件影響它所在的​​目錄和任何子目錄。它不能對樹上的目錄做任何事情。查看htaccess docs瞭解更多詳情。

因此,如果你想保留.html擴展名,你必須在根目錄「/.htaccess」執行「AddType application/x-httpd-php .html .php .htm」。或者,正如Matt S建議將擴展名更改爲以PHP身份進行處理的內容。