2008-12-03 113 views
2

我將基於joomla的ex-site移至wordpress。導入工作正常,但問題是舊的鏈接不再工作。 因爲只有50篇左右的文章,我認爲將每個帖子的規則(在.htaccess中)作爲一個好主意。將joomla url重定向到wordpress

嗯......不是經常的事情是像你想,那麼重定向不工作在所有:(

舊的Joomla鏈接看起來是這樣的:

http://site.com/index.php?option=com_content&task=view&id=49&Itemid=29 
http://site.com/index.php?option=com_content&task=view&id=42&Itemid=29 
http://site.com/index.php?option=com_content&task=view&id=68&Itemid=29 

,需要被翻譯成:

http://site.com/?p=23 
http://site.com/?p=24 
http://site.com/?p=25 
  • 新舊鏈接之間基本上沒有關係,所以我不認爲一個正則表達式將幫助

  • 新老網站都在同一個域

好了,問題是,我已經嘗試過任何規則(和我嘗試了很多!),但沒有奏效。在少數情況下,我得到500錯誤,但大部分時間重定向都不起作用。

那麼,你們中的任何一個人都有同樣的問題?我不需要想要有很好的固定鏈接,但如果可以的話,那會更好。問題是我有很多舊網址的反向鏈接,我不想放棄它們。

非常感謝你們!

回答

1

由於你的網站在WordPress的轉換是比較新的,有什麼阻止你使用舊的Joomla! ID在您的WP數據庫表中?這將允許你很容易地使用正則表達式。

另一種選擇是創建一個處理的Joomla一個單獨的PHP腳本!網址然後重定向到WordPress的。所以,你會在你的Apache配置一個正則表達式檢測的index.php?選項= com_content &任務=查看網址,找到了「身份證」的值,然後重定向到someotherscript.php,將有地圖你的IDS從的Joomla!到Wordpress。這個腳本會使用header('Location:?p ='。$ id)重定向到Wordpress中的正確頁面。

+0

Location頭字段是一個絕對URI。 – Gumbo 2009-01-29 13:42:08

+0

我只是做了一個相對的重定向,它的工作。 – jlleblanc 2009-01-29 14:21:06

+0

不是一個非常有用的選項恕我直言,在這裏你創建2從原來的一個重定向到一個特殊的腳本(你舉例someotherscript.php),並形成第二個重定向到新的URL。這是一個巨大的性能問題,可能會降低您的搜索引擎優化排名 – Webdesigner 2017-09-25 21:41:57

1

Thnaks的想法!我把這個index.php文件(wordpres默認):

if(isset($_GET['option'])) { 
    if(is_numeric($_GET['id'])){ 
     header ('HTTP/1.1 301 Moved Permanently'); 
     header("Location: http://www.site.com/?p={$_GET['id']}"); 
     die(); 
    }else { 
     die('Hacking attempt'); 
    } 
} 

而且就像...偉大的! :d

0

另一種選擇可能是使用重定向插件來爲你做這個。每次更改或更新主題時都可以保存解決方案。

0

我曾與一些不知名的CMS到Joomla一個非常類似的問題。 如果你想在Apache中使用.htaccess來做到這一點,那麼如果舊URL和新URL之間沒有絕對關係,那麼你必須爲每個URL對寫兩行。

RewriteEngine On 
# now the first Example 
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$ 
RewriteRule ^index\.php$ /?p=23 [R=301,L] 
# Repeat last two lines for all your URLs 

我不知道,如果你真的有這樣的新網址。個人一個SEF URL會更好,例如爲:https://example.com/path/to/new/page

如果你想這樣做,比你能做到這一點,但你必須添加?在目的地結束,否則舊的查詢字符串將被添加到您的新目標是這樣的:https://example.com/path/to/new/page?option=com_content&task=view&id=49&Itemid=29 因此在本例做如下:

RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$ 
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]