2012-07-25 7 views
11

私のマシンに外部IPとホスト名が設定されています。Apacheをホスト名にリダイレクトするためのhttpd.conf

アプリケーション内では、APIにアクセスするためにドメイン名のみを使用しています。だから私はIPアドレスを介して自分のAPIにアクセスしようとすると、302 Moved一時的なエラーを示しています。 したがって、IPアドレスを持つサーバーにヒットするリクエスト(Homepageの場合)は、ホスト名にリダイレクトする必要があります。ユーザは、それが私は、Apacheのhttpd.conf内のリダイレクトを使用してみました。このためhttps://ayz-abc.mysite.com/main

にリダイレクトされるべきであるhttps://XX.XX.XX.XX/main当たったとき、ある

<VirtualHost XX.XX.XX.XX> 

DocumentRoot "/var/www/html" 
#ServerName ayz-abc.mysite.com/ 

# Other directives here 
RewriteEngine On 
RewriteRule /.* https://ayz-abc.mysite.com/ [R] 

</VirtualHost> 

私はまたPlsssssが私を助けて、次の

<VirtualHost *.portnum> 
DocumentRoot "/var/www/html" 
RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule https://XX.XX.XX.XX/main https://ayz-abc.mysite.com/main [R=301,L] 
</VirtualHost> 

で試してみました。

+0

302はエラーではありません。サーバーが302で応答している場合、リダイレクトは機能しています。サーバーからのHTTP応答は何ですか? –

+0

UIは引き続きホスト名にリダイレクトされませんが、APIは内部的にホスト名を指すように構成されています。したがって、UIからAPIにアクセスしようとすると、APIへのリクエスト(ホスト名付き)は302 – Poppy

答えて

7

[OK]を、ログを書き換える見ることができます。あなたはそれもこれが私のために働くホスト名

+1

これは、HTTP_HOST以外のURLの残りの部分を取り除きます。 RewriteRule ^(。*)$ https://ayz-abc.mysite.com$1 [R = 301、L] – pogeybait

1

これを試してみてください:

RewriteRule $ https://ayz-abc.mysite.com/ [L,R] 

はまた、あなたが see here

+0

と表示されますが、同じエラーが発生しています。 またAnkitは、ブラウザではまだIPアドレスだけを表示します。ホスト名ではありませんか? – Poppy

+0

永続的なhttps://xx.xx.xx.xx/main https://ayz-abc.mysite.com/main/にリダイレクトしても問題ありませんか? – Poppy

1

にリダイレクトされます。この条件が含まれていない場合は、書き換え条件に

<VirtualHost XX.XX.XX.XX> 

DocumentRoot "/var/www/html" 
#ServerName ayz-abc.mysite.com/ 

# Other directives here 
RewriteEngine On 
RewriteCond %{HTTP_HOST} !^ayz-abc.mysite.com$ 
RewriteRule /.* https://ayz-abc.mysite.com/ [R] 

</VirtualHost> 

が欠落しています。アパッチのhttpd.confの設定を追加

CASE-1:ユーザーがhttp://XX.XX.XX.XX/mainhttp://ayz-abc.mysite.com/main当たったとき、それはhttps://ayz-abc.mysite.com/mainにリダイレクトする必要があります

構成:

# 
# Use name-based virtual hosting. 
# 
NameVirtualHost *:80 
<VirtualHost *:80> 
ServerName XX.XX.XX.XX 
Redirect /main https://ayz-abc.mysite.com/main 
</VirtualHost> 

CASE 2:ユーザーがhttps://XX.XX.XX.XX/mainを打つことhttps://ayz-abc.mysite.com/main

設定:

にリダイレクトする必要があります。 0
NameVirtualHost *:443 
<VirtualHost *:443> 
DocumentRoot "/var/www/html" 
#Server Name 
ServerName XX.XX.XX.XX 
SSLEngine on 
SSLOptions +StrictRequire 
# Redirect to the specified URL 
Redirect /main https://ayz-abc.mysite.com/main 
<Directory /> 
SSLRequireSSL 
</Directory> 
.... 
.... 
</VirtualHost> 
0

APIを使用せず、ブラウザーとクローラーをIPアドレスの代わりにURLに移動したい場合は、RedirectPermanentを使用できます。

<VirtualHost XX.XX.XX.XX> 

    RedirectPermanent/http://ayz-abc.mysite.com/ 

</VirtualHost> 

<VirtualHost XX.XX.XX.XX> 

    DocumentRoot "/var/www/html" 
    ServerName ayz-abc.mysite.com/ 

</VirtualHost> 

それは検索エンジンに役立ちます、「あなたが将来的ににリダイレクトされたURLを使用してください」信号301のHTTPステータス、で応答するという利点があります。サイトを新しいドメインに移動する場合は、同じソリューションを使用する必要があります。

関連する問題