web-dev-qa-db-ja.com

SEO Joomla URL to WordPress URL's

Joomla 1.5 SEF URLからWordPress SEF URLに移行しようとしています。

  1. 古いリンクは次の形式を使用します:/site/sectionname/categoryname/id-titlename.html

  2. /wp/index.php?p=idに移行したい

.htaccessファイルを変更しましたが、機能していないようです。

RewriteEngine on
RewriteRule ^/(.*)/(.*)/[0-9]+-(.*)$ /index.php?p=$3 [L]

誰も私がこの問題を解決する方法を知っていますか?.

4
manhag

正規表現には次の問題があります。

  1. 「サイト」と「セクション名」には.*しかありませんが、「カテゴリ名」には1つありません。例に基づいて、正規表現に3番目のディレクトリレベルが必要です。
  2. 参照する必要のない項目をカッコで囲みますが、参照する必要があるIDをカッコで囲みません。現在そこにある正規表現にあるすべての括弧を削除し、IDの周りにいくつか置く必要があります:([0-9]+)
  3. .*よりも文字クラスを使用する方が良いでしょう。ドットは貪欲で、次のスラッシュを含むすべてに一致します。複数の.*sで記述された正規表現では、正規表現エンジンが追加の「バックトラッキング」作業を多く行う必要があります。正規表現は、期待どおりに機能しません。
  4. ..htmlは、リテラルのピリオドだけでなく、任意の文字に一致します。次の場所で.をエスケープする必要があります:\.html
  5. この書き換えルールが.htaccessを対象としている場合、正規表現はスラッシュで始まってはならず、.htaccessのコンテキストで開始スラッシュが想定されます。書き換えルールは、/に入るときにのみhttpd.confで始まる必要があります
  6. 書き換えルールで既存のURLのコンテンツを表示するのではなくリダイレ​​クトする場合は、[L][L,R=301]に変更する必要があります

以下は、より適切に機能する正規表現です。これは、文字、数字、アンダースコア、ダッシュのみがカテゴリ、タイトルなどに表示されることを前提としています。

RewriteEngine on
RewriteRule ^[a-zA-Z0-9_\-]+/[a-zA-Z0-9_\-]+/[a-zA-Z0-9_\-]+/([0-9]+)-[a-zA-Z0-9_\-]+\.html /index.php?p=$1 [L]

また、Timothyの答えに記載されているリダイレクトプラグインにこの正規表現を入れてみることもできます。

4

現在Wordpressを使用していて、単に古いJoomlaのURLを新しいURLにリダイレクトしようとしている場合は、プラグインを使用して生活を楽にすることをお勧めします。

私はこのプラグインをたくさんお勧めします:

http://wordpress.org/extend/plugins/redirection/

また、標準のID番号の代わりにWordpress内で派手なパーマリンクを使用する必要があることに注意してください。この設定は、wp-adminの[設定]オプションにあります。

Rewriteルールを少し変更して、投稿IDをキャプチャして渡すことで、この特定の問題を解決できると思います。現在、IDを渡す必要があるときに投稿のタイトルを渡します。

RewriteEngine on
RewriteRule ~/.*/.*/([0-9]+)-.*$ /index.php?p=$1 [L]
1
Don Gilbert