2017-06-05 11 views
3

これは私の現在のルール.htaccessです。 /page/company-a.htaccess例外ルールが機能しない

/offersフォルダ内のすべてのファイル/ページ

    1. ページを:基本的に、私は、以下の条件を除いてdomain1.comからdomain2.comにサイト全体をリダイレクトします私はwww.domain1.com/page/company-aにアクセスし、代わりにdomain2.com/index.phpにリダイレクトされています。

      アドバイスありがとうございます。

      RewriteCond %{REQUEST_URI} !^/offers 
      RewriteCond %{REQUEST_URI} !^/page/company-a 
      
      RewriteCond %{HTTP_HOST} ^www\.domain1\.com$ [NC] 
      RewriteRule ^(.*)$ http://www.domain2.com/$1 [L,R=301] 
      
      
      # Pass all requests not referring directly to files in the filesystem to 
      # index.php. Clean URLs are handled in drupal_environment_initialize(). 
      RewriteCond %{REQUEST_FILENAME} !-f 
      RewriteCond %{REQUEST_FILENAME} !-d 
      RewriteCond %{REQUEST_URI} !=/favicon.ico 
      RewriteRule^index.php [L] 
      
  • +0

    '.htaccess'ファイルに他の指示がありますか? – MrWhite

    +0

    はい、私はそれを使って質問を編集しました。 – Slay

    +0

    この他の関連する質問と同じ原則が適用されます。https://stackoverflow.com/questions/44282823/htaccess-conditional-https-for-static-pages – MrWhite

    答えて

    2

    使用THE_REQUEST変数の代わりREQUEST_URITHE_REQUEST変数は、ブラウザからApacheが受け取った元の要求を表し、一部の書き換えルールの実行後に上書きされることはありません。

    RewriteEngine On 
    
    RewriteCond %{THE_REQUEST} !\s/+(offers|page/company-a) [NC] 
    RewriteCond %{HTTP_HOST} ^(?:www\.)?domain1\.com$ [NC] 
    RewriteRule^http://www.domain2.com%{REQUEST_URI} [L,R=301,NE] 
    
    # Pass all requests not referring directly to files in the filesystem to 
    # index.php. Clean URLs are handled in drupal_environment_initialize(). 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule^index.php [L] 
    

    テスト中にブラウザのキャッシュをクリアしてください。

    +0

    こんにちは!デバッグするときにヒットします.. そこにあるデバッグログに「この変数はサポートされていません:%{THE_REQUEST}」 – Slay

    +0

    こんにちは!どのように私はデバッグログの場所を見つけることができますか? – Slay

    +1

    この最近のエラーの原因ではありません...タイプミスがあります:RewriteRule置換に中カッコがありません。 – MrWhite

    関連する問題