2

次のことを達成する方法を誰か提案できますか (mod_rewrite または virtualdocumentroot を使用してソリューションを作成できませんでした)::

1) 私のウェブサイトで任意のサブドメインを許可します (*.mysite.com は 404 エラーを出してはいけません) そして

2) ユーザーがブラウザに表示する URL が、ユーザーが入力したものであることを確認します。

3) リダイレクトなし

(したがって、ユーザーが avalidsubdomain.mywebsite.com と入力した場合、ページは対応するディレクトリから提供される必要があります。現時点では、保持する必要があるディレクトリ構造は気にしません。機能する限り、何でも結構です。一方、 、何か thatdoesnotexist.mywebsite.com を入力した場合、404 を受け取るべきではなく、代わりに Web サイトのカスタム ページに移動する必要があります)。

たとえば、http: //dsadsadsdsadsd.blogspot.com/ のように、blogspot.com の任意のサブドメインが機能することを確認します。(もちろん、Google は Google であり、独自の Web サーバーを作成できます)。しかし、これと同じくらい簡単なことは Apache でできると確信しています。

注: 1) 有効なサブドメインを追加するたびに、Apache 構成または .htaccess に追加/変更したくありません。

2) さまざまなスレッドで読んだことから、キャッチオール サブドメイン ルールに mod_rewrite を使用できますが、ユーザーがブラウザで見る URL は同じままではありません。

ありがとう!

乾杯、

JP


関連する質問をしましたが、そこにある回答で問題が解決したようです。誰かがこの質問を見た場合に備えて、ここで言及します。

mod_rewrite 正規表現 (リダイレクトが多すぎる)

4

4 に答える 4

1

設定したいシナリオは、Apache httpd のmod_vhost_aliasで実装できます。

存在しないサブドメインをキャッチするために、デフォルトの仮想ホストを作成する必要があるだけです。詳細については、仮想ホスト マッチングの詳細な説明を参照してください。

例:

<VirtualHost _default_:80>
  ServerName example.com
  DocumentRoot /srv/www/custom_page
  # ...
</VirtualHost>

UseCanonicalName Off
VirtualDocumentRoot /srv/www/%1/%2+
于 2010-11-01T12:33:25.967 に答える
0

あなたが説明していることはDNSで行うことができ、それを引き出すにはワイルドカードを使用する必要があります.

于 2010-11-01T12:34:48.733 に答える
0

その価値のために:

mod_rewrite を使用して、存在しないサブドメインを対応するルート ドメインにリダイレクトするアプローチを考え出しVirtualDocumentRoot /.../%0ました。これによりクライアント URL が更新されますが、[P] RewriteRule フラグを使用してこれを非表示にすることができます。例のようにプレースホルダー ページにリダイレクトすることも簡単です。

セットアップが完了したら、構成設定を編集してドメインまたはサブドメインを追加または削除する必要はありません。

于 2012-07-06T08:11:16.927 に答える
0

あなたのhttpd.confに追加

<VirtualHost *:80>
        ServerName default
        ServerAlias *
        VirtualDocumentRoot /htdocs/%-2.0.%-1/%-3
</VirtualHost>

www.example.com のドメインを /htdocs/example.com/www/ に向けます。

次に、root フォルダーに .htaccess ファイルを追加します: /htdocs/example.com/.htaccess には次のものが含まれます。WWW を好きなように変更できます。

# Enable Rewrite Engine
RewriteEngine on

# Rewrite all non-existing sites to www.
RewriteCond %{HTTP_HOST} example\.com$
RewriteRule ^.*$ http://www.example.com%{REQUEST_URI} [R=301,L]

これがお役に立てば幸いです。

于 2014-01-07T11:55:17.450 に答える