0

/indexサブドメインとドメインのように、すべてのインデックス ファイルを書き換えたいと考えています。この時点まで、サブドメインを使用する必要はありませんでした。問題は、htaccess ファイルからの書き換えルールです。これにより、以下のコードのように URL が書き換えられます。

RewriteRule ^index\.(htm|html|php) http://%{HTTP_HOST}/ [R=301,L]
RewriteRule ^(.*)/index\.(htm|html|php) http://%{HTTP_HOST}/$1/ [R=301,L]

ドメイン内のすべてのインデックス ファイルが書き換えられることを意味します。これはうまく機能しますが、サブドメインでは機能しません。これで、次のようなサブドメインの条件を簡単に追加できると思いました。

RewriteCond %{HTTP_HOST} !^subdomain\.example\.com$
RewriteCond %{HTTP_HOST} !^www\.

しかし、これは幸いなことにうまくいきません。

ここでさらに情報を提供すると、URL は次のようになります。

http://www.example.com/index
and the subdomain:
http://subdomain.example.com/index

上記のコードを使用すると、URL は次のようになります。

http://www.example.com/
and the subdomain:
http://subdomain.example.com/index

誰かが私を助けてくれたら最高です。

どうもありがとう。

アップデート:

さらに情報を提供するには、物事がどのように機能するかを説明する必要があります。

ルート ディレクトリには、サブドメイン用のフォルダーがあります。

                                    --> /index.php
                      --> /folderA 
       --> /subdomain               
/root                 --> /folderB
                                    --> /index.php

URL は次のようになります。

http://www.example.com/subdomain/folderA/index

http://subdomain.example.com/folderA/index

私はきれいな URL を使用しているので、そうではindexありませんindex.php。デフォルト設定では、ページを呼び出すときに既に index.php が非表示になっています。問題は、folderA と folderB を意味する言語を変更するときです。そのため、ファイルのベース名を読み取り、ヘッダー関数を使用して正しいディレクトリにリダイレクトします。主な問題はサブドメインです。ドメインではうまく機能します。URL のフォルダーからインデックス ページを取得したとき:

http://subdomain.example.com/folderA/(index will be hidden)

ベース名 (=>index) を読み取り、次のようにヘッダーを付けます。

http://subdomain.example.com/folderB/(index will be hidden)

トラブルの原因になります。URL が間違った方法で書き換えられます。または別の簡単な例:

全ページにロゴボタンを設置root/subdomain/folderA/

このボタンは、次のリンクのみです: <a href="/index.php">...</a>. ページの URL は次のようになります。subdomain.example.com/folderA/filexyそのリンクをクリックすると、URL は次のように書き換えられます。www.example.com/subdomain/folderA/

4

2 に答える 2

1

ルールを次のようにします。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# do nothing if subdomain
RewriteCond %{HTTP_HOST} !^subdomain\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule - [L]

RewriteRule ^index\.(htm|html|php) http://%{HTTP_HOST}/ [R=301,L]
RewriteRule ^(.*)/index\.(htm|html|php) http://%{HTTP_HOST}/$1/ [R=301,L]

PS: DirectoryIndex ディレクティブを確認することをお勧めしますが、上記のコードを次の行に置き換えることができます。

DirectoryIndex index.htm index.html index.php
于 2013-05-28T19:52:46.177 に答える
0

これを試して:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^subdomain\.example\.com$ [NC]
    RewriteRule ^/index\.(htm|html|php)$  http://%{HTTP_HOST}/$1 [NC,R=301,L]    
</IfModule>
于 2013-05-28T18:24:03.133 に答える