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

我不知道为什么,但是您被重定向到脚本而不是漂亮的 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>

它在这里不起作用(从domain.com/folder/重定向到www.domain.com/blog/index.php,当使用 2 个“目录”条目时):

<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>

在两个目录中也使用Options +FollowSymLinks +SymLinksIfOwnerMatch进行了测试,但没有运气:(

我在这里看到了一个使用 VirtualHosts 而不是 Directory 的解决方案: 通用 htaccess 将 www 重定向到非 www 但认为它应该是一种方法,因为这个问题不仅与“非 www 到 www”有关,而且与任何重定向有关。

4

1 回答 1

0
<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
    #ADDED LINE BELOW
    RewriteRule ^/$          ../blog/index.php
</Directory>

试试我上面添加的行。我认为问题在于“http://domain.com”被重定向到“http://www.domain.com/”(注意尾部斜杠)。然后,如果没有 uri ^$,您将在第二组中重定向,但实际上 uri 是“/”。

于 2012-07-11T12:35:08.450 回答