20

WordPress サイトを Drupal に一括移行することに成功しました。残念ながら、Wordpress では、コンテンツ URL は www.example.org/?p=123 のようなものでした。htaccess私のドメインは同じですが、Drupal では URL を www.example.org/?p=123 にすることができないため、リダイレクトを行いたいと考えています。つまり、コンテンツの URL は Wordpress の場合と同じではありません。たとえば、新しい Drupal の URL は次のようになります。www.example.org/content/MyNewPage

.htaccess ファイルでこれを試しましたが、動作しません

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 のリストの一番上にあることを確認しました。これを修正するにはどうすればよいですか?

4

2 に答える 2

39

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

クエリ文字列に基づくリダイレ​​クトには、mod-rewriteを使用する必要があります。

RewriteCond %{QUERY_STRING}  ^p=375$
RewriteRule (.*)  http://www.example.org/content/MyNewPage?  [R=301,L]
于 2012-10-25T16:56:03.323 に答える
1

htaccess で ModRewrite を使用することを検討してください。

<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>

また、連結された新しい URL に古いページ ID を渡すこともできます (または 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>
于 2012-10-25T17:07:13.190 に答える