2014-07-10 207 views
1

我確定我忽略了一些愚蠢的東西,但這是我第一次需要重定向。單頁重定向不重定向?

我正在嘗試使用htaccess文件將301舊頁面重定向到新網站的相應頁面。

.htaccess的內容如下:

<head> 
</head> 
Redirect 301 http://www.metalsetinc.com/about_us.html http://www.metalsetinc.com/about.html 

我已經得到了重定向下一個空行。

原始頁面文件是否需要保留在服務器上才能重定向工作?我目前已將其移至較舊版本的文件夾。

使用這種格式,我只是在進入舊頁面時發生404錯誤。

我錯過了什麼?

+1

不要把HTML放在你的.htaccess中 – danronmoon

回答

1
  • .htaccess文件應該有一個確切的名字(你提到的.htaccess
  • 它不應該包含任何HTML,爲Apache只是說明。

例如,與國防部重寫,這是非常靈活的,你以後可能會需要更復雜的規則:

RewriteEngine On 
RewriteRule ^about_us.html about.html [L,R=301] 

這是假設的mod_rewrite是安裝激活的htaccess文件。 如果您不確定,要檢查mod_rewrite是否已安裝,請查看phpinfo(); 輸出中已安裝模塊的列表默認情況下,未針對htaccess文件啓用mod_rewrite。如果您正在管理自己的服務器上,打開httpd.conf 並確保Web根目錄目錄塊包含下列行之一:AllowOverride FileInfoAllowOverride All

+0

我沒有服務器訪問權限,而現在我只是在學習一些.htaccess功能。問題的一部分是我有名爲htaccess的文件 - 不是.htaccess。謝謝! – sforcash

+0

不客氣,很高興幫助。 :) – zx81

1

在補充@ zx81answer,

您可以使用Redirect指令,從mod_alias中,但作爲在DOC規定的格式是:

重定向[狀態] URL路徑URL

第一個URL只是一個路徑,而不是一個完整的路徑。

所以這應該更好的工作:

Redirect 302 /about_us.html http://www.metalsetinc.com/about.html 

而且我在這裏使用一個302個狀態。你應該總是從臨時的302重定向開始。當它工作時,您可以將其更改爲301永久重定向。但在測試時使用301重定向會阻止瀏覽器重新嘗試請求。在301模式下,每個來自服務器的響應都存儲在瀏覽器內存中,測試新規則的唯一方法是首先關閉瀏覽器。因此,從302開始。

+0

「302第一」的建議是有道理的。一切都在工作。謝謝! – sforcash

+0

+1有用的建議 - 我喜歡你的措辭「答案補充」,非常溫和。 :) – zx81

0

對於任何可能正在閱讀此內容的人而言,最後一項建議是確保您的。htaccess文件保存爲Unix格式,而不是DOS。對我而言,我發現使用Notepad ++最簡單。

在Notepad ++中,進入編輯 - > EOL轉換 - > Unix/OSX。