私のドメインdomain.com は www.domain.com にリダイレクトされますが、内部リダイレクトにより、一部のケースでのみ機能します。
- domain.com/folder/はwww.domain.com/folder/にリダイレクトがありますが、 www.domain.com/blog/index.phpにリダイレクトされます。
ここでの問題は、内部的にwww.domain.com/folder/が RewriteRule を通じてそのblog/index.phpを使用することです。
RewriteRule ^$ ../blog/index.php
理由はわかりませんが、Nice URL ではなくスクリプトにリダイレクトされます。
ここで機能します(すべてのコードが同じ「ディレクトリ」エントリ内にある場合、domain.com/folder/からwww.domain.com/folderへのリダイレクト):
<Directory /var/www/vhosts/domain.com/httpdocs/>
Options -All +FollowSymLinks
RewriteEngine on
# redirect non-www to www
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
RewriteRule ^folder/$ ../blog/index.php
</Directory>
ここでは機能しません ( 2 つの「ディレクトリ」エントリが使用されている場合、domain.com/folder/からwww.domain.com/blog/index.phpへのリダイレクト):
<Directory /var/www/vhosts/domain.com/httpdocs/>
Options -All +FollowSymLinks
RewriteEngine on
# redirect non-www to www
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
</Directory>
<Directory /var/www/vhosts/sonidon.com/httpdocs/folder/>
RewriteEngine on
RewriteRule ^$ ../blog/index.php
</Directory>
オプション +FollowSymLinks +SymLinksIfOwnerMatchを両方のディレクトリで使用してもテストされましたが、うまくいきませんでした:(
ここでは、Directory の代わりに VirtualHosts を使用して解決策を見ました: Generic htaccess redirect www to non-www ですが、この問題は「non-www to www」だけでなく、リダイレクトにも関連しているため、これを行う方法であると思います。