実現したいこと
現在xserverで運用中のexample.comというドメインがあり、sub.example.comというサブドメインでwordpressサイトを運用中です。
ここで、example.comから特定のURL(https://target.com?ref_=aaa)へリダイレクトをかける処理を行っているのですが、上記のサブドメインのみ除外したいです。
該当のソースコード
htaccess
1<IfModule mod_rewrite.c> 2RewriteEngine On 3RewriteCond %{HTTP_HOST} !^sub\.example\.com$ 4RewriteRule ^(.*)$ https://target.com?ref_=aaa$1 [R=301,L] 5</IfModule>
試したこと
https://teratail.com/questions/9o2r28i2be0r7p
上記を参考にソースコードのように試してみたのですが、サブドメインにもリダイレクトがかかってしまいました。
補足情報(FW/ツールのバージョンなど)
サーバー:xserver
サブドメインの場合、通常はDocumentRootが異なると思いますが、設定などによって同じにしているのでしょうか?
DocumentRootを分けて、サブドメイン無しの場合だけリダイレクトする、sub.example.comでは何もしないほうがシンプルになるのかなと思います。
wordpressを使っているということは、他にリライト定義があるのでは?
「質問に書いてない、別のリライト定義の影響でした」というがっかりするオチがよくあります。
あと、301リダイレクトを行っているので、リダイレクト定義を修正する都度、ブラウザのキャッシュクリアが必要ですがやってますか?「以前のリダイレクトがキャッシュされてました」というのもありますね。
あと、Eggpanさんのコメントにもありますが、ドキュメントルートがどうなっていて、.htaccessを何処に置いているのかも重要です。あるいは、特定ホストだけに適用したい場合は、.htaccessに書くのでなく、<Virtualhost ~~>~~</virtualhost>に書くのも簡明です。
ありがとうございます
構造は
ルート/
ー.htaccess<--今回はこちらに記述
ーsub.example.com/.htaccess
sub.example.com/.htaccessの中身は下記になっています
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} ^www.sub.example\.com$
RewriteRule ^(.*)$ https://sub.example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ブラウザのキャッシュのほうですが切っているのでそちらの問題では無いのかなと思っています。
> ブラウザのキャッシュのほうですが切っているのでそちらの問題では無いのかなと思っています。
ブラウザ開発者ツールの「キャッシュを無効化」ですか?
それって、お使いの環境で301リダイレクトにも効くことを確認済みでしょうか?少なくとも以前は効かなかった(301はキャッシュされる)です。
説明不足で度々すみません
https://kinsta.com/jp/tools/redirect-checker/
こちらのツールを使ってリダイレクトのチェックをしており、ブラウザはchromeで毎回閲覧履歴を削除して行っていました
> ブラウザのキャッシュのほうですが切っている
は、普通はブラウザの設定でキャッシュを無効にしていることを意味します。事実は正確に書きましょう。普通に事実を書けば良いだけなのですが。
> サブドメインにもリダイレクトがかかってしまいました。
とは、具体的にどういうURLで、どういうURLにリダイレクトされましたか?
また、それは具体的にどんな方法で確認して、どういう確認結果を見ましたか?
> ルート/
> ー.htaccess<--今回はこちらに記述
> ーsub.example.com/.htaccess
> sub.example.com/.htaccessの中身は下記になっています
の意味もよくわかりません。素直に見ると、
example.comのドキュメントルートが「ルート/」で、そのディレクトリに質問文に書いてある内容の.htaccessが置いてあり、その子の「ルート/sub.example.com」がsub.example.comのドキュメントルートで、そこにコメントに書いてある.htaccessがあるという風に読めますが、合ってますか?
それともsub.example.comのドキュメントルートもexample.comと同じく「ルート/」なのでしょうか?

回答1件
あなたの回答
tips
プレビュー