demo.example.com
をexample.com/my-demo
にリダイレクトしたい。これは私の書き換えルールですが、実稼働サーバーで動作させることはできません。
RewriteCond %{HTTP_Host} ^demo\.example\.com
RewriteRule ^(.*)$ /my-demo/$1 [R=301,L]
現状では、同じホストにリダイレクトしています。すなわち。 demo.example.com/file
はdemo.example.com/my-demo/file
ではなくexample.com/my-demo/file
にリダイレクトしていますが、リダイレクトループが発生します。 RewriteRule
置換で絶対URLを指定する必要があります。
RewriteEngine On
RewriteCond %{HTTP_Host} =demo.example.com
RewriteRule ^(.*)$ http://example.com/my-demo/$1 [R=301,L]
これをdemo.example.comディレクトリの.htaccess
ファイルに入れます:
RewriteEngine On RewriteCond%{HTTP_Host} ^ demo\.example\.com [NC] RewriteRule(。*)http://example.com/demo/$1 [ L、R = 301]
つまり、demo.example.comはroot-folder/demoフォルダーにあります
その.htaccess
ファイルをroot-folderではなく、フォルダーdemoに置きます。
この作業があなたのために願っています。
このRewriteRule
を持つVirtualHostのServerAlias demo.example.com
がありますか?そうしないと、それが機能しない理由です。
ServerAliasではなくサブドメインの場合は、.htaccessファイルをメインドメインディレクトリではなくサブドメインに配置することを忘れないでください。まだ行っていない場合は、.htaccessに「RewriteEngine On」も追加します。