2017-12-22 12 views
0

我々は最近、私はそれが前にあったようにアクセスできる古いサイト上でのユーザーのディレクトリを維持したいと思い、http://newdomain.comを言って、別のサーバーに弊社のWebサイトを移動しますつまり、http://oldomain.com/~userですが、ルートフォルダの下にアクセス可能なものは新しいドメインを指します。古いサーバーのユーザーディレクトリは/home/userファイルシステムにあります。だから、私は次のルールを書いた:http://newdomain.com/~user:二番目のルールは完璧に動作しながら、に、RedirectMatch

RedirectMatch permanent ^/~(.*) /home/~$1 

RedirectMatch permanent ^/(.*) http://newdomain.com/$1 

、最初のものは、まだ次のように新しいサイトにマップしたいと考えています。

古いサイトの/var/www/htmlのものはすべて新しいサイトにリダイレクトされますが、/homeのものはリダイレクトされないように、2つのルールを修正するにはどうすればよいですか?

- ここ

正しくユーザーのホームページにアクセスするためのURLをマップしますが、ブラウザは文句や自分のサイトが表示されないベンのソリューションに基づいて、新しいコードです。ルートフォルダのURLリダイレクトは正常に動作します。

RewriteEngine on 
# RewriteBase/-- I had to comment this as the apache did not like it 
Rewriterule ^/~(.*) /~$1 [R=301,L] 

RewriteCond %{REQUEST_URI} !^/home/~ 
RewriteRule ^/(.*) http://newdomain.com/$1 [R=301,L] 

答えて

0

あなたは/home/~とURI接頭辞かどうかをテストするためにRewriteCondを使用して、URLを書き換え、永続的なリダイレクトを行うためにRewriteRuleを使用する必要があります。

RewriteEngine On 
RewriteBase/
RewriteRule ^~(.*) /home/~$1 [R=301,L] 

RewriteCond %{REQUEST_URI} !^/home/~ 
RewriteRule ^(.*) http://newdomain.com/$1 [R=301,L] 

3行目:~{any_characters}とURIプレフィックス場合、/home/~{any_characters}にURIを書き換え、

に永久ライン5をリダイレクト:テストURIは/home/~{any_characters}

ライン6と接頭辞ではない場合:次に書き換え処理ルール、URIを{any_characters}からhttp://newdomain.com/{any_characters}に書き換え、永続的にリダイレクト

+0

ありがとう@Ben。あなたが提供したものに変更を加える必要がありました。なぜなら、Apacheはデフォルトの.confファイル内のRewriteBase /が気に入らなかったからです。私の質問にあなたの解決策に基づいて私の更新されたコードを見てください。 しかし、ユーザーのホームディレクトリのURLがhttp://olddomain.com/~userのように同じままであることがわかっても、ブラウザはエラーメッセージを表示します。 ページが正しくリダイレ​​クトされていません。 Firefoxは、サーバーがこのアドレスの要求を決して完了しない方法でリダイレクトしていることを検出しました。 –

+0

.htaccessファイルはどこに置かれましたか?それはルートフォルダですか? – Ben

+0

私は実際に '/ etc/apache2/sites-enabled/000-default.conf'にあるデフォルトの設定ファイルにこれらのルールを入れました。 .htaccessファイルがルートフォルダで動作していないという問題がありました。 –

関連する問題