2011-07-27 11 views
1

私は書き換えルールを持っている:htaccess - htaccessファイルはどのようにサブディレクトリに適用されますか?

RewriteRule ^Catalog/Custom_Pages/([^\.]+)\.html$ http://www.domain.com/New/Catalog/Custom_Pages/Custom_Pages_Main.php?cp=$1 [R] 

ディレクトリ構造は、私がするRewriteRuleの前で「カタログ」を省略した場合は、URLが書き換えられていないdomain.com/New/Catalog/

です。 htaccessファイルは 'New'ディレクトリにあります。したがって、 'New'のhtaccessはそのサブディレクトリにのみ適用されるか、または 'カタログ'を省略できるようにすべてのサブディレクトリに適用されるべきですか?これはおそらくサーバー設定ですか?

+0

あなたはあなたが望むURLの例を挙げて、望ましくないURLを入力する必要があります。 – Enki

答えて

2

.htaccessファイルが/New/フォルダ内にある場合、それは、このフォルダとすべてのサブフォルダに適用されますが、RewriteRuleディレクティブ内のすべてのURLパスは相対/New/にフォルダになります。

あなたの代わりにこのルールを試行し、のRewriteRuleパターンからCatalog/一部を省略したい場合:

RewriteRule Custom_Pages/([^\.]+)\.html$ http://www.domain.com/New/Catalog/Custom_Pages/Custom_Pages_Main.php?cp=$1 [R] 

あなたの現在のパターンを明確に(正規表現手動何^手段を確認してください)「URLはカタログから始めるべき」と言います。

上記のルールは、Catalog/Custom_Pages/something.htmlPink-Kitten/Custom_Pages/something.htmlに適用できます。

+0

それでカロットが原因です。したがって、carotの前のすべては、htaccessがあるベースディレクトリです。それは理にかなっている。ありがとう。 –

0

パターンがexempleのためので、ディレクトリから、ページのURLにマッチします:ディレクトリから

http://www.domain.com/New/Catalog/Custom_Pages/test.html 

/新規ページへのパスは次のとおりです。次に

Catalog/Custom_Pages/test.html 

正規表現パターンがCatalog/Custom_Pages/test.htmlと一致する場合、ルールは適用されますが、それ以外の場合は適用されません。

ps:CatalogまたはCustom_Pagesに.htaccessがある場合、そのルールが最初にテストされます。

関連する問題