2012-02-29 5 views
0

www以外のサブドメインで動作する書き換えルールがあります。.htaccessのリライトルールのリダイレクト

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteRule ^catalog\.html$ http://www.domain.com/static.php?staticpage=$1 [L] 

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

あなたがhttp://domain.com/catalog.htmlをヒットした場合、それは成功します。httpにリダイレクト:// www.domain.com/catalog.html(私はWWWで始まり、PHPですべての.htmlを処理するために、すべてのURLを強制したいですファイルが存在しないと仮定すると、もちろんスペースはありません)。または、http:// www.domain.com/catalog.htmlを表示し、catalog.htmlが存在する場合は実際の.htmlファイル(スペースなし)をレンダリングします。

http://www.domain.com/catalog.htmlは、ファイルが存在するかどうかに関係なく、ブラウザにstatic.phpを表示せずに達成しようとしています。 static.phpはすべての.htmlページを処理する必要があります

ありがとうございます!

答えて

1

最後のcond正規表現からから%変数に、あなたはどのようにそんなに成功するための条件が必要になります。私はあなたが.htmlファイルが要求されたときstatic.phpの内容を表示したいと仮定しています

RewriteCond %{HTTPS}s ^..(s?) 
RewriteRule^  -  [E=PROTO:http%1] 

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule^   %{ENV:PROTO}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
0

ために。ブラウザにstatic.phpが表示されることはありません。

http://を使用すると、外部リダイレクトが行われ、アドレスがブラウザに表示されます。

RewriteCond %{HTTP_HOST} ^www\. [NC] 
RewriteRule (.+)\.html$ static.php?staticpage=$1 [L] 

HTTPSについては、@TerryEが示唆していることに従うことができます。 リダイレクトしようとしているページがわからないhttps