1

sub1.mydomain.orgのような複数のドメインを持つサイトを持っていますsub2.mydomain.org

現在、これらすべてのサブドメインを index.php にリダイレクトし、サブドメイン名を変数として渡す htaccess コードがあります。

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ http://mydomain.org/index.php?subdomain=$1 [QSA,L]

URLアドレスがmydomain.org/index.php?subdomain=(sub accessed).

サブドメイン名を表示したままにしたい。どうやってやるの?

私の共有ホストサイトは次のように構成されています

/username/public_html/addon-domain/index.php
/username/public_html/addon-domain/subdomains
/username/public_html/addon-domain/subdomains/sub1
/username/public_html/addon-domain/subdomains/sub2...

上記のhtaccessファイルはsubdomainsディレクトリにあります。

編集: ----- 上記の問題は解決されましたが、新しい状況が発生しました -------

私の HTACCESS コードの問題は、絶対パス (http://www.mydomain...) を使用したため、[R] の有無に関係なく、常に新しい URL が表示されることです。代わりに、相対パスを使用する必要があります。ただし、まだややこしい問題があります。新しいコードは次のとおりです。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.org$
RewriteRule ^(.*)$ (can't use relative here) [QSA,L]
RewriteRule ^(.*)$ \.\./index.php?subdomain=$1 [QSA,L]

最初の cond/rule は、自分のサイトが sub.mydomain.org などのサブドメインからアクセスされているかどうかを確認します。true の場合、[L] は 2 番目の rewriterule の実行を停止します。2 番目の rewriterule は、/subdomains/ フォルダーにある HTACCESS ファイルからの相対パスを使用しており、mydomain.org/subdomains/anysub から自分のサイトに入ると、すべてうまく機能します。

ただし、サイトが anysub.domain.org として入力されている場合、相対パスは機能しません。「内部サーバー エラー。サーバーで内部エラーまたは構成ミスが発生したため、要求を完了できませんでした。」という 2 つのエラーが発生します。また、「さらに、ErrorDocument を使用して要求を処理しようとしたときに、500 内部サーバー エラー エラーが発生しました。」

誰でも理由を知っているでしょうか?相対パスは常に HTACCESS ファイルの場所に関連付けるべきではありませんか?

編集: mydomain/subdomains/anysub/ が機能することがわかりましたが、 mydomain/subdomains/anysub ( / で終わらない) は再び get var の表示をトリガーします。これは複雑すぎて答えを得ることができないと考え始めています

4

1 に答える 1

0

Pの角かっこにフラグを追加してみてください。RewriteRule

RewriteRule ^(.*)$ http://mydomain.org/index.php?subdomain=$1 [P,QSA,L]
于 2012-07-12T05:06:12.033 に答える