3

ブログで私の古い投稿アドレスをどのように見ているかは次のとおりです。

subdomain.domain.com/view/1310/article-title/

訪問者がそのようなアドレスで Google から来たときに、次のようにリダイレクトされるようにしたいと思います。

http://www.domain.com/article-title/

古い/最初のリンクに関する詳細を指定する必要があります。

  • subdomainは変数です
  • viewは定型文です
  • 1230、任意の番号/IDにすることができます

私はこれを試しました:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} subdomain.domain.com $ [NC]
RewriteRule ^/view/(*)/(.*)$ http://www.domain.com/$2 [R=301,L]

大きな 500 エラーが発生しました。

サイトは WordPress の cms を支配しています。

前もって感謝します!


Michael Berkowski の回答の後に追加されました。私の現在の wp ルールは次のとおりです。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
4

1 に答える 1

3

500 エラーは(*)*(0 個以上の) の前に修飾子として何もない場合の結果です。意図したかもしれませんが(.*)、本当に必要なのは、[^/]+すべての文字を次まで取得すること/です。

Options +FollowSymLinks
RewriteEngine On
# Slight modification of the subdomain - must escape .
RewriteCond %{HTTP_HOST} subdomain\.domain\.com$ [NC]
# Note this may need to be ^view/ instead of ^/view
# In htaccess context the leading / should probably not be there
RewriteRule ^/view/([^/]+)/(.*)$ http://www.domain.com/$2 [R=301,L]

上記は特に を探しsubdomain.domain.comますが、変数であると指定したため、これを使用して を除くすべてのサブドメインを取得しますwww.domain.com

Options +FollowSymLinks
RewriteEngine On
# Matches all subdomains except www.
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^/view/([^/]+)/(.*)$ http://www.domain.com/$2 [R=301,L]

これに失敗した場合は、順序が重要である可能性が高いため、他の書き換えルールを投稿してください (これは WordPress であると述べたので、他のルールがあると思います)。

アップデートには WordPress のルールが組み込まれています。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# The new rules handle the subdomain redirect...
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^view/([^/]+)/(.*)$ http://www.domain.com/$2 [R=301,L]

# After which WordPress does its internal redirection
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
于 2013-02-22T21:10:56.233 に答える