2017-07-04 16 views
0

私はルートフォルダにライブウェブサイトを持っているので、開発変更を保存してサーバー上でテストするためにサブディレクトリを作成しました。サブディレクトリ用にhtaccessを設定すると、ライブウェブサイトを実行したままにしたい。ベータ(サブディレクトリ)にhtaccessを設定する方法

次のように現在、私のhtaccessファイルは編集私

を助けてください、htaccessを

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


RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 


RewriteRule ^(member-([0-9]+)-([a-zA-Z0-9\-]+))/?$ team.php?id=$2&%{QUERY_STRING} [NC,L] 

をルートに似ています。私は、URLの末尾に/ベータ版を追加することにより、ベータサイトにアクセスしたいです。元https://www.example.com/beta

答えて

0

あなたはおそらく、単にあなたのサブディレクトリに同じ.htaccessを作成し、ちょうどRewriteBaseコマンドを削除することでOKである必要があり、複数の.htaccessファイル

- それは本当に、ほとんどの場合で必要とされない、と書き換える場合を除き、ドキュメントルート上のファイルへのパスを正しく設定すると、かなり混乱する可能性があります。ここで

は、サンプルのセットアップです:そのセットアップを

+- DOCROOT/index.php : 

    <?php echo $_SERVER['PATH_INFO']; 

+- DOCROOT/.htaccess : 

    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*) index.php/$1 

+- DOCROOT/subdir/index.php : 

    <?php echo $_SERVER['PATH_INFO']; 

+- DOCROOT/.htaccess : 

    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*) index.php/$1 

、あなたはhttp://server/some-pathを呼び出し、/some-pathがエコーバック、またはhttp://server/subdir/other-pathを呼び出し、/other-pathはエコーバックを確認することができます。ただ、最後の書き換えチェーン(面白いですのみ1を)DUPとを追加 - あなたはまた、ドキュメントルートにあるメイン.htaccessファイル内のサブディレクトリの書き換えルールを追加することができます

シングル.htaccess

RewriteCondから最初にサブディレクトリのみに制限されます。上記のあなたの例を取ると

、それは次のようになります(私も冗長RewriteEngine Onコマンドを削除するにはliberyを取ってきました)

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

RewriteBase/

RewriteCond %{REQUEST_URI} subdirectory/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^subdirectory/(member-([0-9]+)-([a-zA-Z0-9\-]+))/?$ subdirectory/team.php?id=$2&%{QUERY_STRING} [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(member-([0-9]+)-([a-zA-Z0-9\-]+))/?$ team.php?id=$2&%{QUERY_STRING} [NC,L] 

。要求がサブディレクトリに来ると、最初のルールでキャッチされ、サブディレクトリコンテキストを使用して書き換えられ、[L]フラグはmod_rewrite停止処理を引き起こします。それ以外の場合は、メインルーティングを行います。この設定は、私の好みに合わせて少し複雑すぎます。おそらく、追加の.htaccessファイルを用意しています。

+0

サブディレクトリ内に別のhtaccessファイルを追加する必要がありますか? –

+0

Ahh ..あなたがやっていると仮定していましたが、 'RewriteBase'を削除することはサブディレクトリの' .htaccess'で行うべきです。実際には、サブディレクトリの書き換えルールをメインディレクトリに追加することができます。私は詳細を私の答えを更新しました – Guss

+0

あなたが仮定しているものはcorreecgtです、実際に私は別のhtaccessファイルをサブディレクトリに持っていますが、私は 'RewriteBase'コマンドを削除しました。私は実際のhtaccessがかなり長いので、htaccessを別に保つことを好むです –

関連する問題