1

私は最近、かなり大きなサイト(〜6,000件の投稿)をDrupalからWordpressに移行しました。プロセスの一環として、SEOとリンク保持の目的で、Drupalで作成されたURLエイリアスをWordpressに移行しました。

Drupalでうまく機能するDrupalが作成したURLエイリアスの例:

  • / stories/will-this-be-another-la-niña-year

WordpressのそのURLは404を返します。ただし、これは機能します。

  • / stories / will-this-be-another-la-nina-year

その場合、私の最善の策は、URLがWordpressに渡される前に、htaccessで一般的な国際文字を英語の文字セットの書き換えルールに書き込むことだと思われます。

私がこれをどのように行うことができるか考えていますか?あなたが与えることができるどんな助けにも感謝します。マット。

4

2 に答える 2

0

ワードプレス内でこれを行うためのより良い方法があるようです。ワードプレスのTracチケットを介してクイックブラウザを実行することをお勧めします。問題のパッチまたは一時的な修正がある可能性があります。ただし、htaccess / redirectメソッドに移動する必要がある場合は、RewriteMapを使用して、必要に応じてサニタイズしてリダイレクトするか、ASCII以外の文字に明示的にリダイレクトすることができます。

RewriteMapは、マップをセットアップするためにサーバーまたはvhost構成のいずれかにアクセスする必要があります。/stories/will-this-be-another-la-niña-yearこれは、マップされたURIのリストと同じくらい単純である可能性がありhttp://yourdomain.com/stories/will-this-be-another-la-nina-yearます(すべてのASCII URLはhttp://、ブラウザーをリダイレクトするようにmod_rewriteに指示するため重要です)。または、非ASCII文字を探して適切なASCII文字に置き換えるスクリプトを作成することもできます。

テキストマッピング:

RewriteMap sanitize txt:/path/to/uri_mapping.txt

スクリプトマッピング:

RewriteMap sanitize prg:/path/to/sanitize_script.php

次に、htaccessファイルで、このマッピングを次のように呼び出すことができます(これらのルールは、WordPressが取得するにURIをサニタイズする必要があるため、WordPressルールより上にある必要があります。

RewriteRule ^(.*)$ /${sanitize:$1|$1} [L]

server / vhost構成にアクセスできない場合は、htaccessファイルで可能性を列挙する必要があります。ここでも、これらのルールをワードプレスのルールの上に置きます。

# replace ñ
RewriteRule ^(.*)ñ(.*)$ /$1n$2 [R=301,L]

# replace ú
RewriteRule ^(.*)ú(.*)$ /$1ú$2 [R=301,L]

于 2012-08-03T16:45:55.913 に答える
0

.htaccessファイルの先頭に次の行を追加したところ、機能します。

RewriteRule ^(.*)é(.*)$ /$1e$2 [R=301,L]
RewriteRule ^(.*)è(.*)$ /$1e$2 [R=301,L]
RewriteRule ^(.*)ê(.*)$ /$1e$2 [R=301,L]
RewriteRule ^(.*)î(.*)$ /$1i$2 [R=301,L]
RewriteRule ^(.*)ô(.*)$ /$1o$2 [R=301,L]
RewriteRule ^(.*)û(.*)$ /$1u$2 [R=301,L]
RewriteRule ^(.*)â(.*)$ /$1a$2 [R=301,L]
RewriteRule ^(.*)à(.*)$ /$1a$2 [R=301,L]
RewriteRule ^(.*)ï(.*)$ /$1i$2 [R=301,L]
于 2017-03-23T13:52:20.103 に答える