0

私のドメイン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」だけでなく、リダイレクトにも関連しているため、これを行う方法であると思います。

4

1 に答える 1