0

そのため、私が使用しているホスティング プロバイダーは仮想ホストなどをサポートしていないため、プライマリ ドメインをサブディレクトリに書き直そうとしています。たとえば、私は現在持っています:

example.com は example.com/sites/example.com/ に書き直されました

これは、.htaccess で次のコードを使用して正常に動作します

Options +FollowSymLinks
RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_URI} !^/sites/example.com/.*$
RewriteRule ^(.*)$ /sites/example.com/$1

この理由は、同じサーバー上に、プライマリ ドメインからアクセスしたくない他のドメインがあり、サーバーを整理しておくためです。

そのため、/sites/example2.com を指すアドオン ドメインとして example2.com もあり、正常に動作します。

ただし、projects.example.com が /projects/ を指すなど、さまざまなサブディレクトリを指すサブドメインもありますが、これらは /sites/example.com/ ディレクトリに書き換えられるだけです。

私の質問は、これを解決するにはどうすればよいですか (また、可能です)。前もって感謝します!

4

1 に答える 1

0

ユーザーがプライマリ ドメインにいる場合、ホスト条件を追加する必要があります。ユーザーはリダイレクトされます。これを確認してください。コードを少し変更しました。

Options +FollowSymLinks
RewriteEngine On 
RewriteBase /
#Here we're capturing host name, if it has only one point - this is not subdomain.
RewriteCond %{HTTP_HOST} ^([a-z0-9\-]+\.[a-z]{2,5})$
RewriteCond %{REQUEST_URI} !^/sites/%1/
#Redirecting to the current host name in folder sites
RewriteRule ^(.*)$ /sites/%1/$1 [L]

編集: これは、ドメインに正規表現を追加するというエレガントな決定ではありませんでした。.co.uk のようなドメインを使用している場合は、第 2 レベルのドメインに対してのみ機能します。.co.uk のようなルールで手動で追加する必要がありますRewriteCond %{HTTP_HOST} ^somesite.co.uk$

于 2012-07-27T10:47:17.033 に答える