2009-11-30 43 views
1

我需要將格式如下所示的一個Wordpress URL重定向到另一個域上的乾淨URL:www.bluewidgets.com/?p=123。我如何通過.htaccess來做到這一點?我見過的所有教程都說我需要在查詢字符串之前指定url的另一部分,例如index.php,但我的URL沒有一個 - 它只是域,然後是查詢字符串。重定向a /?p = xxx wordpress URL

+0

「乾淨的網址」是什麼意思? www.bluewidgets.com/?p=123必須重定向到www.redwidgets.com/?p=123?或www.bluewidgets.com/?p=123到www.redwidgets.com/post/really-cool-widgets?不同的域名帖子是否有相同的id或相同的url slugs?你想重定向所有舊的ID或只是特定的?: – GmonC 2009-11-30 15:42:11

+0

我的意思是www.bluewidgets.com/?p=123到www.redwidgets.com/post/really-cool-widgets 不同的域沒有任何相同的元素了。我只想重定向一個特定的URL。 – Liza 2009-12-01 11:00:32

回答

1

你就不能添加到header.php中,先天下之憂:

<? php 
if ($_GET['p'] == '123') { 
    header('Location:http://www.yourotherdomain.com'); 
exit; 
} 

?我過去做過類似的事情。它可能並不漂亮,但它的工作原理 - 我有興趣聽到更多有經驗的php-ers是否是合法的策略。

+0

嗨,我試着把你給的代碼放到header.php的各個部分(以上所有的代碼,在部分上方,在部分,但是得到這個錯誤(顯示不同的行,取決於我在哪裏添加它當然): 解析錯誤:語法錯誤,意想不到的T_IF在/home1/bluewidgets/public_html/foobar/wp-content/themes/scribblings/header.php上線2 我不介意使用這種方法,而不是htaccess,只是有一些麻煩得到它的工作。 – Liza 2009-12-01 11:08:58

+1

更改第一行爲<?php - 注意沒有空間並添加?>在最後,然後嘗試。 – 2009-12-01 13:02:36

+0

完美的工作,謝謝!:D 並感謝所有誰幫助過。 – Liza 2009-12-02 11:08:44

0

不是wordpress已經內置了URL漂亮嗎?出於好奇,你爲什麼需要這樣做。

除此之外,你提到的是你如何通過htaccess來完成它。您是否遇到此方法的問題?

+0

問題是我有兩個域:domain1.com和domain2.com。 我最初在domain1.com上有我的博客,然後我的網站的實際名稱變爲可用於註冊,所以我註冊了domain2.com,並將其作爲我的主域名並將domain1.com停放在其上。 那個特別的帖子 - domain1.com/?p=xxx - 有一個付費的貼子和URL必須保持在那裏爲我每月支付。但是,我現在想要將domain1.com和domain2.com分開,並將domain1.com用於其他目的。所以我需要實現一個從domain1發佈URL到domain2發佈URL – Liza 2009-11-30 12:26:25

+0

的重定向。我提到的東西似乎要求URL有另外一點,比如/index.php?p=xxxx - 正如你看到我的URL一樣沒有index.php位,只是/?p = xxxx,所以當嘗試該方法時,它沒有工作。 – Liza 2009-11-30 12:27:11

0

標準的301重定向是在格式(並會在域1):

Redirect 301 /filename.php http://domain2.com/filename.php 

,但我只是去嘗試用默認的永久鏈接,並沒有奏效。

在domain1上,您可以使用標準的wordpress重寫塊重寫URL,然後立即將其重定向到tp domain2。凌亂,但它可能工作。

+0

我試過你之前發佈的代碼,它似乎不適用於查詢字符串。不確定如何按照您的意思重寫網址:S – Liza 2009-11-30 15:01:11

+0

您是否在domain1上使用wordpress?或者其他使用mod_rewrite並可能與wordpress衝突的內容? – markratledge 2009-11-30 15:30:39

+0

domain1和domain2都運行兩種不同的Wordpress安裝。 – Liza 2009-12-01 11:01:03

1

試試這個規則:

RewriteCond %{QUERY_STRING} =p=123 
RewriteRule ^$ /foo/bar? [L,R=301] 

或者使用REQUEST_URI

RewriteCond %{REQUEST_URI} =/?p=123 
RewriteRule ^$ /foo/bar? [L,R=301] 

注意,RewriteCond模式與=標識逐一比較,而不是一個正則表達式測試開始。此外,替換中的空查詢(用…?表示)將刪除最初請求的查詢。