私はubuntu10.4でapache2+tomcatを使用しています。私は8080でリッスンしているウェブアプリを持っているTomcatサーバーで実行しています
"http:// internal:8080 / dir / name-privatewebapp /"
"http:// internal:8080 / dir / name-publicwebapp /"
外部向けのApacheサーバーは、ドメインのリクエストをプロキシしています。
「サブドメイン」を「domain.com/subdomain」に再マッピングしたいので、他のリクエストは適切なパス/ウェブアプリにプロキシされます
web.john-doe.domain.com ---> www.domain.com/web/john-doe
http://www.john-doe.com ---> www.domain.com/web/john-doe
http://www.foo-bar.com ---> www.domain.com/web/foo-bar
mod_rewriteだけで動作させることはできませんでした。mod_proxy、mod_proxy_ajp、mod_rewriteを調べています
サーバーにお願いします
- ドメインからサブドメインを取得します
- サブドメインがwww、w、またはwwでないことを確認してください
- 書き換える前に、ディレクトリが実際に「www.domain.com」に存在するかどうかを確認してください
- ディレクトリが存在しない場合は、ワイルドドメインのままになります
- 最後に、ディレクトリが存在する場合、実際の書き換え
http://www.askapache.com/htaccess/crazy-advanced-mod_rewrite-tutorial.htmlでいくつかのリンクを確認し、チュートリアルを学習しました。
それは成功していません。
私はこのillumin-it.servehttp.com/wordpress/2012/01/redirecting-to-as-using-apache/をフォローし、少し成功しました。
ただし、すべてのサブドメインの仮想ホストを編集せずに、サーバーでリライトとプロキシをオンザフライで実行したいと思います。
これが私の更新されたvhostファイルです
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.domain.com
ServerAlias www.domain.com domain.com *.domain.com
RedirectPermanent / http://www.domain.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
# Prevent looping this rule
# RewriteCond %{ENV:REDIRECT_STATUS} !200
# RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
# RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9.-]+).domain.com$ [NC]
# RewriteRule (.*) /%2/$1 [L]
# change the "." in the path to "/"
# RewriteRule ^(.*)\.(.*)/(.*)$ /$1/$2/$3 [L]
#redirect domain.com to www.domain.com
RewriteCond %{HTTP_HOST} !^domain\.com$ [NC]
RewriteRule ^ http://www.domain.com%{REQUEST_URI} [R=301,NC]
</IfModule>
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# ErrorLog /var/log/apache2/webapp_error.log
# LogLevel warn
# CustomLog /var/log/apache2/webapp_access.log combined
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
# ProxyPass /user/ http://localhost:8080/user/privatewebapp/
# ProxyPassReverse /user/ http://localhost:8080/user/privatewebapp/
#
# ProxyPass /publicweb/ http://localhost:8080/dir/publicwebapp/
# ProxyPassReverse /publicweb/ http://localhost:8080/dir/publicwebapp/
#
# ProxyPass / http://localhost:8080/dir/publicwebapp/
# ProxyPassReverse / http://localhost:8080/dir/publicwebapp/
ServerName www.domain2.com
ProxyRequests Off
ProxyPreserveHost On
RewriteEngine On
RewriteCond %{HTTP_HOST} ^dir/publicwebapp$ [NC]
RewriteRule ^(.*)$ http://www.domain2.com/$1 [R=301,L]
<Location / >
Order deny,allow
Allow from all
RedirectMatch ^/$ /dir/publicwebapp/
ProxyPass ajp://localhost:8009/
ProxyPassReverse ajp://localhost:8009/
</Location>
</VirtualHost>
私も試しました... http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html
www.username.host.com/anypathが内部的にwww.host.com/home/username/anypathにマップされると仮定します
サイトのアプリケーションはJavaサーバーで作成されているため、mod_rewriteだけでは機能しないと思います。
仮想ユーザーホスト
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2