将www重定向到非www重定向到脚本而不是漂亮的URL

时间:2012-07-11 10:23:48

标签: mod-rewrite

我的域 domain.com被重定向到www.domain.com 但是,由于内部重定向,它仅适用于某些情况:

  • domain.com/folder / 应将重定向到www.domain.com/folder / ,但会重定向到 < EM> www.domain.com/blog/index.php

这里的问题是,在内部, www.domain.com/folder / 通过RewriteRule使用 blog / index.php

RewriteRule ^$          ../blog/index.php

我不知道为什么,但您被重定向到脚本而不是漂亮的网址。

IT在这里工作(从 domain.com/folder / 重定向到 www.domain.com/folder ,当所有代码在同一&#34;目录&#34中时;条目):

<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&#34;使用目录&#34;条目:

<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 进行测试,但没有运气:(

我在这里看到了使用VirtualHosts而不是Directory的解决方案: Generic htaccess redirect www to non-www 但认为它应该是一种方法来做到这一点,因为这个麻烦不仅与&www;非www到www&#34;但任何重定向。

1 个答案:

答案 0 :(得分: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是“/”。