2012-10-25 12 views
15

WordPressサイトをDrupalに大量に移行しました。残念ながら、Wordpressでは、コンテンツのURLはwww.example.org/?p=123のようなものでした。私のドメインはまだ同じですが、htaccessでリダイレクトしたいのですが、DrupalではURLがwww.example.org/?p=123になっていないためです。言い換えれば、コンテンツはWordpressと同じURLを持っていません。たとえば、新しいDrupalのURLは、私は私の.htaccessファイルでこれを試してみましたwww.example.org/content/MyNewPageクエリ文字列に基づいてURLをリダイレクトする方法は?

のようなものになるでしょうし、それが

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage 

は、だから私は以下試した動作しませんが、それはどちらか動作しません。

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage 

私も以下のように試してみました。

Redirect 301 http://www.example.org http://www.google.com 

私のリダイレクトルールは、自分の.htaccessのリストの一番上にあるので、最初に評価されるようにしました。これをどうやって解決するのですか?

答えて

29

リダイレクトもRedirectMatchも、リダイレクトソースのクエリ文字列を指定できません。 [Source]

あなたは、クエリ文字列に基づいてリダイレクトするためのMOD-リライトを使用する必要があります:あなたは、あなたのhtaccessファイルにModRewriteを使用し検討することができる

RewriteCond %{QUERY_STRING} ^p=375$ 
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L] 
+0

残念ながら、404ページが見つからないためリダイレクトされ、URLはまだhttp://www.example.org/?p=375になっています。私は "コンテンツ/ MyNewPage"が存在し、動作していることを確認できます。 Drupalで正常に動作しているため、私のRewriteRulesが動作していることも確認できます。 – user785179

+0

ブラウザのキャッシュをクリアしてもう一度やり直してください。ブラウザは '301 Permanent redirect'sをキャッシュします。 – undone

+0

良い提案ですが、Firefoxは無限ループとしてリダイレクトしています。 「Firefoxは、サーバーがこのアドレスの要求を決して完了しない方法でリダイレクトしていることを検出しました。 URLはhttp://www.example.org/content/MyNewPage?p=375として公開されています – user785179

1

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=345$ [NC] 
RewriteRule index.php content/MyNewPage [NC,L,R=301] 

</IfModule> 

そして、あなたも合格することをお勧めします古いページIDを新しいURLに連結します(またはQS?):

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=(.*)$ [NC] 
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301] 

</IfModule> 
+0

私はあなたの方法を試しましたが、私は404エラーページに連れて行きます。 – user785179

関連する問題