私は何が欠けていますか? mysite.com:9999
にアクセスすると、サイトは取得できますが、mysite.com
は取得できません。明らかに、ユーザーがポートを入力する必要はないので、どうすればよいですか?ユーザーがURLに入力する必要がないほどポートを隠そうとはしていません。これはApacheの構成設定のどこかにありますか? httpd.config、container config、または他の場所を見るべきですか?これは、Apacheサーバー上の仮想ホストです。どんな提案も大歓迎です。
編集-virtualhosts.confの作業仮想ホストブロックは次のようになります。
開始近くに、仮想ホストエントリには次のような名前が付けられます。
NameVirtualHost *:700
NameVirtualHost *:710
...
NameVirtualHost *:760
Httpバージョンの作業ブロックの下は次のようになります。
<VirtualHost *:710>
ServerName webdev.url.com
ServerAdmin [email protected]
# Comment out when OC4J instance is down for maintenance:
<IfModule mod_oc4j.c>
Oc4jMount
</IfModule>
# Uncomment when OC4J instance is down for maintenance:
# DocumentRoot "/org/dev"
# - Restrict 'Cross-Site-Tracking' or XST
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
<IfModule mod_dir.c>
DirectoryIndex index.jsp
</IfModule>
ErrorLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/dev_error_log 440"
CustomLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/dev_access_log 440" common
<Location "/pls/dev">
Order deny,allow
Deny from all
Allow from ####internal ip addresses####
</Location>
</VirtualHost>
ポートを指定する必要がある新しいものは次のようになります。
## - for Mobile
<VirtualHost *:770>
ServerName mdev.url.com
ServerAdmin [email protected]
# Comment out when OC4J instance is down for maintenance:
<IfModule mod_oc4j.c>
Oc4jMount / msitedev
</IfModule>
# - Restrict 'Cross-Site-Tracking' or XST
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
<IfModule mod_dir.c>
DirectoryIndex m.jsp
</IfModule>
ErrorLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/mdev_error_log 440"
CustomLog "|/opt/app/Oracle/product/AS10.1.2/Apache/Apache/bin/rotatelogs/logs/mdev_access_log 440" common
# <Location "/org/dev">
# Order deny,allow
# Deny from all
# Allow from ####
# </Location>
</VirtualHost>
繰り返しますが、ここで何かがURLにポート番号(例:710)を入力する必要を抑制しているかどうかを把握しようとしています。調べてみると、htaccessファイルはどこにも存在しないようです。
DNS SRVレコード(RFC 2782) のマニュアルを次に示します。これは、実際に使用するものに合わせてデフォルトポートを変更するために使用できます。
_http._tcp.example.com. IN SRV 0 5 80 www.example.com.
ここで、最後のフィールドの隣はポートで、実際の値をとることができます。 DNS SRVレコードは、ドメインまたはドメイン内の(一部の)ホストのみのデフォルトHTTPポートを再定義できます
Webブラウザーでhttp://www.foo.com
にURLを入力すると、alwaysがポート80に接続しようとします。
ポートがhiddenであるのではなく、ポート80がHTTPのデフォルトであるため、assumedであるリクエスト。
同じ行に沿って、https://www.foo.com
を参照すると、別のポート(https://www.foo.com:8080
)を指定しない限り、常にポート443で接続しようとします。ポート443は、SSL/TLS要求のデフォルトポートです。
説得力のある理由がない限り(たとえば、マシン上で同時に2つのWebサービス[ApacheとIIS]を実行している場合など)、単に新しい仮想ホストをポート80に変更するのが最善の方法かもしれません。 SOで 類似の質問 を尋ねたことがわかりました。モバイルクライアントを別のサイト(またはアプリなど)にリダイレクトしようとしている場合は、ユーザーエージェントに基づいて mod_rewrite を使用できます。
例えば:
<VirtualHost *:80>
DocumentRoot /www/mainwebsite
ServerName www.foo.com
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "Android|blackberry|googlebot-mobile|iemobile|ipad|iphone|iPod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.foo.com/ [L,R=302]
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/mobileapp
ServerName m.foo.com
# You might check for the USER_AGENT here and redirect to the main site if not found
</VirtualHost>
遅く、上記は少しずれているかもしれません-これがあなたに役立つなら、おそらく誰かがそれをより正確に編集することができます。
HTTPプロトコルはデフォルトでポート80を使用します。非標準ポートを使用するようにWebサーバーを構成する場合は、URLでポートを指定する必要があります。それを隠す方法はありません。
Apacheでは、リスニングポートをhttpd.conf
で設定できます。例:
Listen 127.0.0.1:80
ただし、これはvhost configでオーバーライドできます。例:
<VirtualHost *:80>
私は今、自分の問題に対する具体的な答えを投稿したことがないことに気づきました。
最後に、webcache.xmlに詳細を追加して、URLでポートを指定せずにURLが機能できるようにする必要がありました。