質問

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]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top