2016-05-02 13 views
1

ワイルドカードを使用して、すべてのページに対してリダイレクトを実行しようとしています。私は、次のことを試してみました「:.htaccess:動作していないページ以外のすべてのページをリダイレクトします。

RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ 
RewriteCond %{REQUEST_URI} !^/menu 
RewriteRule ^(.*)$ "http\:\/\/www\.new\.com\/$1" [R=301,L] 

私は何を期待してることは

old.com -> new.com 
old.com/abc - > new.com/abc 
old.com/menu -> old.com/menu 

すべてのリダイレクトを除いて、正常に動作している次のとおりです。

old.com/menu -> old.com/http://www.new.com 

と私は理由を把握することはできません。

EDIT:.htaccessの

RewriteOptions inherit 
# Use PHP5.4 as default 
AddHandler application/x-httpd-php54 .php 

# For security reasons, Option followsymlinks cannot be overridden. 
#Options +FollowSymLinks 
Options +SymLinksIfOwnerMatch 
RewriteCond %{HTTP_HOST} ^(www.)?old.com$ 
RewriteCond %{REQUEST_URI} !^/web/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /web/$1 
RewriteCond %{HTTP_HOST} ^(www.)?old.com$ 
RewriteRule ^(/)?$ web/ [L] 
+0

を持っていますか? – MrWhite

+0

残りの内容を追加しました。 – KobeBryant

+0

'RewriteOptions inherit' - これは何ですか?これは、親configファイルにmod_rewriteディレクティブが必要であることを意味します。したがって、これも競合の原因となる可能性があります。新しいディレクティブをインプレースで使用して、.htaccessファイル全体を投稿する方がよいかもしれません。 (ディレクティブの順序は重要です) 'RewriteEngine'ディレクティブはありませんので、あなたが投稿したものは完全には完了していません。 – MrWhite

答えて

0

の残りの部分はTHE_REQUEST変数に基づいて、このルールを試してください:あなたは、あなたの.htaccessファイルに何かを

RewriteCond %{HTTP_HOST} ^(www\.)?old\.com$ [NC] 
RewriteCond %{THE_REQUEST} !/menu [NC] 
RewriteRule ^(.*)$ http://www.new.com/$1 [R=301,L,NE] 
+0

old.com/menuはnew.comに移動します – KobeBryant

+0

このルールは '/ menu' URLを完全にスキップします。ブラウザに不正なキャッシュがあるか、他の競合するルールがあります。 – anubhava

関連する問題