joomlaのURLをワードプレスにリダイレクトする
-
22-07-2019 - |
質問
joomlaベースの元サイトをワードプレスに移動しました。インポートは正常に機能しましたが、問題は古いリンクがもう機能しないことです。 50件程度の記事しかないため、各投稿(.htaccess内)にルールを設定することをお勧めします。
まあ...いつもあなたが望むものとは限らないので、リダイレクトはまったく機能しません:(
古い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
-
基本的に古いリンクと新しいリンクの間に関係がないため、正規表現が役立つとは思わない
-
古いサイトと新しいサイトの両方が同じドメインにあります
OKまれに500エラーが発生することがありますが、ほとんどの場合リダイレクトは機能しませんでした。
では、同じ問題を抱えている人はいますか?素敵なパーマリンクは必要ありませんが、できればそれでいいでしょう。問題は、古いURLへの多くのバックリンクがあり、それらを失いたくないことです。
たくさんの人に感謝します!
解決
サイトからWordpressへの変換は比較的新しいため、古いJoomla! WPデータベーステーブルにIDがありますか?これにより、正規表現をかなり簡単に使用できます。
もう1つのオプションは、Joomla!を処理する別個のPHPスクリプトを作成することです。その後、URLはWordpressのURLにリダイレクトされます。したがって、index.php?option = com_content& task = view URLを検出するApache構成に正規表現があり、「id」の値を見つけて、Joomla!からのIDのマップを持つsomeotherscript.phpにリダイレクトします。 Wordpressへ。このスクリプトは、header( 'Location:?p ='。$ id)を使用して、Wordpressの正しいページにリダイレクトします。
他のヒント
アイデアをありがとう!これをindex.php(wordpressのデフォルト)に入れます:
if(isset(アイデアをありがとう!これをindex.php(wordpressのデフォルト)に入れます:
<*>
そして…のように動作します:D
GET['option'])) {
if(is_numeric(アイデアをありがとう!これをindex.php(wordpressのデフォルト)に入れます:
<*>
そして…のように動作します:D
GET['id'])){
header ('HTTP/1.1 301 Moved Permanently');
header("Location: http://www.site.com/?p={アイデアをありがとう!これをindex.php(wordpressのデフォルト)に入れます:
<*>
そして…のように動作します:D
GET['id']}");
die();
}else {
die('Hacking attempt');
}
}
そして…のように動作します:D
別のオプションは、リダイレクトプラグインを使用してこれを行うことでした。テーマを変更または更新するたびに壊れるソリューションを保存します。
Joomlaにいくつかの未知のCMSで非常に似た問題がありました。 Apacheで.htaccessを使用してそれを行う場合、方法がありますが、古いURLと新しいURLの間に絶対的な関係がない場合は、URLのペアごとに2行を記述する必要があります。
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
この種の新しいURLが本当にあるかどうかはわかりません。個人的には、SEF URLの方が良いでしょう: https://example.com/path/to/new/page
これを実行したい場合は、実行できますが、?を追加する必要があります。そうしないと、次のように古いクエリ文字列が新しい宛先に追加されます: https://example.com/path/to/new/page?option=com_content&task=view&id= 49&amp; Itemid = 29
したがって、この例では次のようにします。
RewriteCond %{QUERY_STRING} ^option=com_content&task=view&id=49&Itemid=29$
RewriteRule ^index\.php$ /path/to/new/page? [R=301,L]