リダイレクトできないURLがたくさんあります。または、.htaccessのmod_rewriteで書き換えることができるので、代わりに書き換えて、301リダイレクトを手動で作成しました。レコードが多すぎず、約40のリダイレクトであり、基本的にExcelテーブルからURLをコピーしています。しかし、サブドメインの完全なURLをメインドメインにリダイレクトする方法:
この方法でリダイレクトしたい:
http://m.somesite.com.au/site/somesite/faqs -> 301 http://www.somesite.com.au/faqs/
そしてもちろん、この方法でグローバルサブドメインをリダイレクトします。
http://m.somesite.com.au -> 301 http://www.somesite.com.au
実際に機能するもの。何が間違っていますか?
例えば:
redirect 301 /about-us/go-social/ http://www.somesite.com/about-us/
redirect 301 /about-us/team/John/ http://www.somesite.com/about-us/
そして、同様のリダイレクトの全体の束、そしてこのようなリダイレクトについては、動作しません:
redirect 301 http://m.somesite.com.au/site/somesite/faqs http://www.somesite.com.au/faqs/
その方法で完全なURLをリダイレクトできますか、または別の解決策がありますか?それでもRewriteCondを使用すると、これは機能しません。
# Single URL
RewriteCond %{HTTP_Host} ^m\.somesite\.com\.au$ [NC]
RewriteRule ^site/somesite/faqs/?$ http://www.somesite.com.au/faqs/
# Global subdomain redirect
RewriteCond %{HTTP_Host} ^m\.somesite\.com\.au [NC]
RewriteRule ^(.*) http://www.somesite.com.au/$1 [NC,L,R=301]
.htaccessファイル:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# 301 Redirects
redirect 301 /about-us/go-social/ http://www.somesite.com.au/about-us/
redirect 301 /about-us/rider-profiles/Alex/ http://www.somesite.com.au/about-us/
{...}
# redirect http://m.somesite.com.au/site/somesite/faqs to http://www.somesite.com.au/faqs/
# m.somesite.com.au redirects
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_Host} ^m\.somesite\.com.au$ [NC]
RewriteRule ^site/somesite/faqs/?$ http://www.somesite.com.au/faqs/ [NC,L,R=301]
# Global subdomain redirect
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTP_Host} ^m\.somesite\.com.au [NC]
RewriteRule ^(.*) http://www.somesite.com.au/$1 [R=301]
redirect 301 http://m.somesite.com/site/somesite/faqs http://www.somesite.com/faqs/
ソースURLはスラッシュで始まるURLパスである必要があるため機能しません(動作するリダイレクトに使用したように) 、絶対URLではありません。
つまり、次のように記述する必要があります(サブドメインドキュメントルートにある.htaccessファイル内)。
redirect 301 /site/somesite/faqs http://www.somesite.com/faqs
PDATE:ターゲットURLの末尾から末尾のスラッシュを削除したことに注意してください。両方の末尾のスラッシュを含めるか、両方の末尾のスラッシュを含めるのいずれかです。
そのようにして完全なURLをリダイレクトできますか
「完全なURL」とはどういう意味ですか?これは最初のリダイレクトと同じです。必要に応じて、完全なURLをリダイレクトできます。 (?)
PDATE:m.example.com
とwww.example.com
は(コメントに記載されているように)まったく同じ場所を指しているため、リダイレクトループに注意する必要がありますが、これには問題ありません。 1。ただし、これは。Hostを具体的にチェックできるため、mod_rewrite(以下を参照)を使用する方が適切です。
それでもこれは動作しません、RewriteCondを使用して
Redirect
(mod_alias)とRewriteCond
/RewriteRule
(mod_rewrite)は異なるApacheモジュールに属していることに注意してください。したがって、実行の順序は予期しないものになる可能性があるため、両方のモジュールからの外部リダイレクトをnever混在させる必要があります。
すでにこれを行っていると仮定しますが、... mod_rewriteを使用するには、書き換えエンジンを有効にし、FollowSymLinks
も有効にする必要があります。
Options +FollowSymLinks
RewriteEngine On
PDATE:(.htaccessファイルをポストした後)ディレクティブの順序は重要です。これらの外部リダイレクト(mod_rewriteを使用)mustは、WordPressinternal rewrites。
外部リダイレクトは、.htaccessファイルの最上部に来る必要があります。
ファイルの最上部にRewriteEngine
およびOptions
ディレクティブを1回だけ含める必要があります。
Mod_rewriteリダイレクトと競合する可能性があるため、mod_alias Redirect
sを削除/変換します。
RewriteCond %{HTTP_Host} ^m\.somesite\.com.au [NC]
RewriteRule ^(.*) http://www.somesite.com.au/$1 [R=301]
少しきちんと...
RewriteCond %{HTTP_Host} =m.somesite.com.au
RewriteRule (.*) http://www.somesite.com.au/$1 [R,L]
すべてのリテラルドット(\.
)をエスケープし、開始(^
)および終了($
)アンカーを使用するか、exact(=
プレフィックス/辞書編集的に等しい演算子)と一致します。 .*
パターンのアンカーは必要ありません。 L
フラグをリダイレクトで使用することをお勧めします(これは最後のフラグですが)。
一時的な(R
またはR=302
)リダイレクトで常にテストします-永続的なリダイレクトとは異なり、これらはブラウザーによってキャッシュされません。満足しているときは、それが機能しているので、パーマネント(301)リダイレクトに変更します。