質問をご覧いただきありがとうございます。
##実装したいこと
①サンクスページに直接URLを打ってアクセスするのを制限したい
②同サイトのお問い合わせページから遷移するときのみアクセス可能にしたい
③他のページからアクセスしてきたときはトップページにリダイレクトしたい
##試したこと
①Referer
にお問い合わせページのURLを設定しsetEnvIf
で変数を設定後、リダイレクト処理をしてみた。
setEnvIf Referer <<お問い合わせフォームのURL>> ref_ok <If "env!=ref_ok!> <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^/thanks <<同サイトのトップページ>> [R=301,L] </If> </IfModule>
②以下のようにコードを変更して試してみました。
SetEnvIf Referer "^<<ここにサイトURLが入ります。>>/(.*)" REF=ref_ok <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{ENV:REF} !ref_ok RewriteRule (.*)thanks <<ここにサイトのトップページURLが入ります。>> [R=301,L] </IfModule>
これだと直接アクセスは制限できるものの、お問い合わせフォームを送信した際もサンクスページに飛ばずにトップページに飛びます。
博識の方、是非助けていただけると幸いです。
2021/07/09 17:50 追記
TaichiYanagiya様のアドバイスより、以下のように変更しましたが、自体は進展しませんでした。
(参考サイト:こちらのサイトの「画像コンテンツなどの無断使用をブロックする」セクション)
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^<<サイトURL>>.*$ RewriteRule (.*)thanks/? <<サイトURL>> [R=301,L] </IfModule>
またChromeでヘッダーのReferer
を確認してみると、常に現在表示しているページがリファラとされていました。
つまり「お問い合わせページ」から「トップページ」に遷移したとき、リファラとして「トップページ」のURLが表示されます。
あまり関係ないかもしれないのですが、もしかしたら関係しているかもしれないのでこちらに追記致します。
2021/07/10 13:43 追記
アクセスログについて追記いたします。
エックスサーバーの管理画面にて該当ドメインのアクセスログを取得し調べました。
お問い合わせフォームの内容を送信後にトップページにリダイレクトされてしまっていた箇所ですが、リファラはしっかりお問い合わせページ(/contact)を指していました。
ですのでリファラは想定通り取得できているが、サンクスページではなくトップページにリダイレクトされてしまっています。
.htaccess
ファイルに不備がないかを再度確認いたします。
あなたの回答
tips
プレビュー