0

プライマリ サイトとして site1.com を持っています。ルート ディレクトリに「site1」と「site2」という 2 つのフォルダを作成しました。Htaccess を使用して、site1.com のトラフィックを "site1" フォルダーにリダイレクトしました。Site2 は、ディレクトリ "site2" を使用して site2.com としても機能します。

さて、問題は site1 がプライマリであるため、 site.com/site2 経由で site2 にアクセスできることです。site.com/site2 を無視したり、site1.com/site2 にアクセスしたときに 404 を表示したり、site2.com を機能させたりするには、どの書き換えを使用できますか?

これが私のhtaccessファイルです。

オプションの RewriteEngine -MultiViews

RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteCond %{REQUEST_URI} !^/site1/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site1/$1
RewriteCond %{HTTP_HOST} ^(www.)?site1.com$ 
RewriteRule ^(/)?$ site1/index.php [L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

私のフォルダ階層は

-root
    .htaccess 
    -site1 folder
          - index.php
    -site2 folder
          - index.php

Godaddy のプライマリ ドメイン設定により、site.com にアクセスすると site1 フォルダーから情報が読み込まれますが、site1.com/site2 にアクセスするとサイト 2 が読み込まれます。

4

2 に答える 2

2

テストされていないコード: 次のことができると思います

RewriteCond %{HTTP_HOST} ^(www.)?site1.com$
RewriteRule ^site2/(.*)$ http://site1.com/$1 [R=301]

これにより、クライアントが からhttp://site1.com/site2/my/awesome/page.phpにリダイレクトされます (またはリダイレクトされるはずです) http://site2.com/my/awesome/page.php

于 2013-07-23T05:15:48.153 に答える
2

Godaddyで同様の問題が発生したため、別の方向に進みました。

site1.com からのヒットだけを探してリダイレクトするのではなく、site2 サブフォルダー / サブドメインにヒットするすべてのリクエストを次のように site2.com に送信しました。

RewriteCond %{HTTP_HOST} !^site2\.com$ [NC]
RewriteRule ^(.*)$ http://site2.com/$1 [R=301,L]

これで、その site1.com/site2 サブフォルダーに侵入するすべてのリクエストは、site2 の適切なページに 301 されます。

私は自分自身を大げさな専門家だとは考えていません。より経験のある人からの批評を歓迎します.

于 2014-02-04T18:25:08.103 に答える