2012-06-08 21 views
-1

我最近協助將網站從純開發域移動到過去曾經是網站的現場網站由另一個CMS系統處理,而不是我們目前使用的系統。目前的系統是Joomla,但我不認爲這對我的問題很重要。.HTACCESS - 將www.example.com/side.php?id=*重定向到www.example.com

因此,與當前網站的網址是從標準的Joomla格式改寫被剝離的index.php和.html後綴的地址加入,這意味着網址是這樣的:

http://example.com/folder/page.html

在另一CMS系統處理的舊網站的URL有如下結構:

http://example.com/side.php?id=1

我們與許多網站鏈接到我們的社會組織 - 也我們甚至沒有意識到這一點 - 所以我需要處理的問題是:我需要將所有這些死鏈接重定向到其他網站,以便他們只是指向我們網站的根。

任何人都可以請向我解釋如何使重定向的.htaccess如下:

/side.php?id=*到example.com

的根在這種情況下,我的意思是*意思任何數字,因爲自然有很多頁面具有不同的ID。

如果他們指向www,它對我來說沒有任何意義。不是前綴。

預先感謝您的幫助,我希望我沒有問過之前已經回答過的問題,但是我對.htaccess的使用經驗非常有限,並且已經搜索並嘗試過不同的解決方案並不適合我。

+0

如果您關注搜索引擎,那麼您應該關注www子域。 –

回答

0

像這樣的規則應該工作:

RewriteCond %{HTTP_HOST} .* 
RewriteCond %{QUERY_STRING} id=\d+ 
RewriteRule ^side.php http://example.com [L,R=301] 

這將外部重定向,具有HTTP 301響應(永久移動)

+0

example.com/side.php?id = 1 這產生了404錯誤。我直接從這裏粘貼到我的.htaccess並通過FTP上傳。你有其他建議嗎? 感謝您的幫助! –

+0

嗯,這應該工作。你可以在你的.htaccess中添加一些隨機字符來查看它是否被處理? (如果是的話,它會拋出一個500錯誤) – Ansari

+0

它確實產生了500錯誤添加「hsjdhksjdhskj」並上傳文件,所以我不太確定這裏有什麼問題。 –

2

在.htaccess在根文件夾中,添加以下:

RewriteEngine on 
RewriteCond %{QUERY_STRING} id=\d+ 
RewriteRule ^side\.php$ http://%{SERVER_NAME}/ [R=301,L,QSD] #Remove the ",QSD" for Apache <2.4.0, or to keep the query string. 

R = 301會告訴瀏覽器/搜索引擎該頁面已被永久移動。

+0

謝謝你,斯科特,但是這個解決方案也在404射擊我......我不太明白。 –

+0

你正在將哪個地址重定向到? (你可以使用example.com來保護隱私) –

+0

根據我的情況,它根本不會重定向 - 它仍然只是顯示example.com/side.php?id=1 –

0

這裏您需要的是一些301 Moved Permanently響應,讓瀏覽器和搜索引擎知道您正在將頁面移動到新的位置。我不會使用mod_rewrite將全部請求重定向到此side.php頁面,而是分析您的舊網站的每個頁面並確定所有內容已被移動的位置。這個武裝,使用htaccess的Rewrite directive通知各個頁面的瀏覽器的移動

Redirect 301 /side.php?id=123 /about_us.html 
Redirect 301 /side.php?id=456 /contact_us.html 

我推薦這個方法,因爲它重定向那些誰導航到過時的頁面有類似內容的舊的新的一頁,他們請求而不是將它們全部重定向到您的主頁。

+0

嗯,問題是很多網站鏈接到舊網站,並沒有一對一的結構(所有),所以這樣做不是一個真正的選擇 –

+0

@CasperDamsgaard嗯,這是一個恥辱。在這種情況下,你可以只是'重定向301 /side.php/' –

+0

這是做正確的實際重定向 - 然而它在side.php之後留在代碼片段中......這意味着它在瀏覽器中鍵入的鏈接看起來像這樣:example.com/?id=1 –

相關問題