2013-02-20 28 views
0

我有一箇舊的網站的網址是這樣的: http://www.test.com/partners/redirects.aspx?product=MobileDevicehtaccess的重寫Linux機器

目前這個URL重定向到一個外部網站,讓我們把它叫做http://www.google.com。這種情況發生在一些大約10年前開發的janky老管理門戶網站上。

本網站生活在一個Windows環境。我們正在從Windows轉移到Linux環境和PHP。

如何在Linux端執行此重定向?

我嘗試這樣做:

Redirect 301 /partners/redirects\.aspx\?product\=MobileDevice http://www.google.com 

,並沒有奏效。我試着用.?=轉義(與\)並且沒有逃脫。

+0

你能發佈一些.htaccess文件嗎? – 2013-02-20 21:13:01

+0

@IanOBrien不要只編輯格式。這篇文章仍然可以使用更多的修改。 – madth3 2013-02-21 17:13:51

回答

1

我不認爲你需要逃脫任何東西。 Redirect 301 /partners/redirects.aspx?product=MobileDevice http://www.google.com應該工作。但你說過你試過這個。

我在想你的Apache實例不允許處理.htaccess文件。檢查您的VirutalHost或全局Apache配置,看看AllowOverride All是否在某處被聲明。否則,Apache將忽略.htaccess文件中的大部分(如果不是全部)指令。

編輯:

做更多的研究,這裏的相同問題的另一個問題。 Apache Redirect Permanent For URL with Data in String (Question Mark)

似乎查詢字符串是什麼不適合你。您可能需要更改此答案,以便盲目重定向而不攜帶查詢字符串。所以你最終會得到類似的東西

RewriteEngine on 
RewriteBase/

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /partners/redirects.aspx\?product=MobileDevice [NC] 
RewriteRule^http://www.google.com [L,R=301] 
+1

您可以測試以查看Apache是​​否通過引發語法錯誤來獲取.htaccess文件 - 只需在文件頂部鍵入「asdf」即可。通常我做的第一件事。 – 2013-02-20 21:12:39

+0

Vondruska,我必須對你做出的唯一改變是在^之後和/ partners之前的第一行添加「^ [A-Z] {3,9}」。我會將你的標記標記爲正確的,如果你可以請編輯你的答案,那麼我們不會混淆前進的任何人!謝謝你的幫助。 – cschneider27 2013-02-21 13:38:25

+0

@ cschneider27啊,是啊,編輯答案反映它! %{THE_REQUEST}轉換爲「GET /partners/redirects.aspx?product=MobileDevice HTTP/1.1」(根據[Apache文檔](http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond ))。正則表達式匹配任何長度從3到9個字符的字母。所以它會覆蓋所有主要的HTTP動詞,如GET,POST,PUSH,DELETE,OPTIONS等。 – 2013-02-21 17:13:47