0

背景:ドットネットベースのカスタムCMSでホストされているWebサイトをWordpressに移行しています。CMSから別のCMSに移行する際のリンクの維持方法

問題:さまざまな投稿の内容には、CMS内の他のコンテンツへのリンクが含まれています。これらのリンクは手動で入力され、httpから始まるURL全体を含みます。私たちはすべての投稿内容をPHPスクリプトを使ってWordpressに移しましたが、コンテンツ内のリンクは古いリンクを指しています。 URL構造が変更されているため、リンクをプログラム的に置き換える方法はないようです。古いURLの

例:新しいURLのhttp://www.example.com/doing-this-and-that-1234.aspx

例:http://www.example.com/categoryname/doing-this-and-that/

要求:私たちは手動ですべてのリンクを変更せずにこれを扱うことができる方法についてのアイデアを必要とします。

ありがとうございます。

答えて

1

私は、現時点では類似した何かをして(それが痛いと血まみれだ)ジャンゴの実行時にに巨大な静的なHTMLストアを移行しています。

私たちのソリューションは特に優雅ではありません。各ページの移行中に、古いURL、新しいURLに注目してリダイレクトデータベースに追加します。私たちはからリダイレクトを引き上げ

//a/@href 
//img/@src 

次へ:私たちは新しいバックエンドとURL構造への私たちのすべてのコンテンツを移行したら、我々はこれらのXPathセレクタでドキュメント内のすべてのリンクを特定するスクリプトを実行していますリダイレクトテーブルを作成し、リンクを以下の正規表現に置き換えます。

1)に、文書内のすべてのリンクを比較することにより:今

#escape special characters to avoid problems with the regex 
link = link.replace('#', r'\#') 
link = link.replace('.', r'\.') 
link = link.replace('/', r'\/') 
link = link.replace(':', r'\:') 

#compile a regex, using the source link, and replace all existing links 
repl_regex = r'href\s{0,}\=[\s\"\']{0,}(%s)[\s\"\']{0,}'%link 
markup = re.sub(repl_regex, 'href="%s"'%dst_url, markup) 

#repeat for images 
repl_regex = r'src\s{0,}\=[\s\"\']{0,}(%s)[\s\"\']{0,}'%link 
markup = re.sub(repl_regex, 'src="%s"'%dst_url, markup) 

#Let me know if you have any questions, the above is written in python 
#and it sounds like you're using php and a .net language. 

この方法は、あなたが好きな、もう少し先行準備が必要になりますよりも、おそらくより多くの仕事がある一方で

は、それは2つの利点がありますリダイレクトテーブルを使用すると、不足しているページや欠落しているリダイレクトを簡単に特定できます。

2)SEO。googlebotにサイト全体を再クロールする代わりに、リダイレクトテーブルに対して301のリダイレクトを提供するだけです。

質問がある場合はお知らせください。

+0

に感謝します。確かに私たちのために行く方法のようにも見える。必要に応じてpingを実行します。再度、感謝します。 – Vinayak

1

私はこれを行うには本当に良い方法を考えることはできませんが、ここで考えています。コマンドラインスクリプトを実行してすべてのページをループし、すべてのリンクをループして、元のリンクと「推奨」リンクを表示することができます。提案されたリンクは、最も一般的なカテゴリ名を持つ新しいフォーマットで、他のカテゴリ名のいずれかに変更することができます。

スクリプトを書きたくない場合は、notepad ++やvim/gvimのようなテキストエディタを使用することもできます。 notepad ++ではreplaceを 'search mode'と 'regular expression'として使用し、vimでは置換コマンド(:%s/foo/bar/gc)の確認フラグを使用します。

0

URLの番号とカテゴリ名の間にマッピングを行うことができれば実現可能です。すべてのファイルを検索して正規表現で置き換えて、http://www.example.com/doing-this-and-that-1234.aspxという形式のURLを見つけ、新しいURLに置き換えます。

正規表現:

(http://www\.example\.com/.*?)-(\d+)\.aspx 
+0

数字はランダムですので、残念ながらこれはうまくいかないでしょう。しかし、提案のおかげで – Vinayak

+0

あなたはどのようにcategoeyの名前を知っていますか? – lkuty

+0

私達はカテゴリの内容を分類した。それは詳細な答えのために以前のURL構造 – Vinayak

関連する問題