
このコードを使用してサブフォルダ内のすべての直接アクセスをリダイレクトしようとしていました
RewriteEngine on
RewriteCond %{HTTP_COOKIE} !user_cookie=[^;]
RewriteRule .* http://webhost.org/ [R=301,L]
これは OHP ファイルに対してのみ機能し、HTML などの他のファイルに対しては機能しないことに気づきました。PHP ファイルへのリンクにアクセスしようとしましたが、予定どおりに機能しましたが、.html
拡張子を持つ他のファイルにアクセスすると、の条件を無視しているかのようにリダイレクトされません.htaccess
。
私は の初心者です.htaccess
。何が間違っているのでしょうか?
サーバー情報:
- Vestacp の新規インストール
- Apache/2.2.15 (CentOS 6 x64)
答え1
投稿したコードは必ずしも「直接」のリクエストには適用されません。クッキーが設定されていない場合(つまり、Cookie
HTTPリクエストヘッダーで返送されていない場合)に適用されます。これは同じことではありません。(おそらく「セッション」クッキーを設定しているのでしょうか?ただし、ブラウザの「セッション」の定義は異なるため、これらのクッキーはより重要になる可能性があります。持続的予想以上です。
「PHP ファイルでのみ機能し、HTML などの他のファイルでは機能しない」場合は、Cookie
何らかの理由で、ブラウザが PHP ファイルへのリクエストの HTTP リクエスト ヘッダーを送信していないことが原因です。おそらく、PHP ファイルが「正しくなく」、Cookie:
HTML ファイルのようにヘッダーが送信される必要があるのでしょうか。
PHP ファイルと HTML ファイルの違いは、キャッシュ、ドメイン、URL パスによるものである可能性があります。これは.htaccess
スクリプトとは何の関係もありません。
「直接アクセス」を確認するには、空のヘッダーを確認するのが一般的ですReferer
。ただし、この方法 (および使用するあらゆる方法) は完全に信頼できるものではありません。