2011-08-26 106 views
4

我的網站設置了htaccess的從HTML指揮所有頁面到PHP如下:htaccess的重定向所有,但一個頁面的HTML到PHP

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^website.com 
RewriteRule (.*) http://www.website.com/$1 [R=301,L] 

RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

我試圖建立雅虎網站瀏覽器和驗證我帳戶我需要添加一個元標記或添加一個HTML文件到我的網站的根文件夾。雅虎拒絕識別我的元標記(我確定我已經正確添加了它)!所以我唯一的選擇是添加html文件。

我的html文件不斷重定向到php,似乎雅虎找不到它。

有什麼我可以添加到我的htaccess文件,以便所有文件重定向到PHP除了雅虎需要看到的一個文件?

回答

7

嘗試增加這個條件:

RewriteCond %{REQUEST_FILENAME} !-f 

這應該允許實際存在的任何文件(也有其他類型的文件等選項)。這假定它不會混淆其他已存在文件的其他內容。

+0

感謝LDG做了這份工作!要清楚給任何其他人與這個問題,並不熟悉htaccess我不得不把這行在我的HTML/PHP重定向 –

4

我看到4層主要的方法(你選擇哪一個更適合你 - 這取決於你的網站的重寫規則邏輯):

1.添加全球排除規則,以防止任何進一步重寫對文件操作:

RewriteCond %{HTTP_HOST} ^website.com 
RewriteRule (.*) http://www.website.com/$1 [R=301,L] 

# do not do any rewriting to this file 
RewriteRule somefile\.html$ - [L] 

RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

如果你願意,你可以指定文件的完整路徑是更具體的(有效排除僅1特定的文件,如果有超過1個文件,這樣的名字,但在不同的文件夾 - 例如URL應該以無引導斜槓開始):

# do not do any rewriting to this file 
RewriteRule ^full/path/to/somefile\.html$ - [L] 

2.添加全局排除規則,以防止上任何現有的文件或文件夾任何進一步重寫操作:

RewriteCond %{HTTP_HOST} ^website.com 
RewriteRule (.*) http://www.website.com/$1 [R=301,L] 

# do not do anything for already existing files 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .+ - [L] 

RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

3.添加排除條件,將拒絕重寫這個特殊.html文件到.PHP

RewriteCond %{REQUEST_URI} !somefile\.html$ 
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

如果你願意,你可以指定文件的完整路徑是更具體的(有效排除1只

,將只允許重寫的.html到.PHP
RewriteCond %{REQUEST_URI} !^/full/url/path/to/somefile\.html$ 

4.添加排除條件:這樣的網址應以斜線開始) - 如果有超過1個文件,這樣的名稱,但在不同的文件夾中特定文件如果這樣的.html文件不存在

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L] 

高於 ALL規則用於放置在.htaccess在網站根目錄。如果放置在其他地方可能需要一些小的調整。

+0

尼斯徹底的答案與靈活的選項。這裏的數字4與接受的答案相符。 – goodeye

相關問題