我的域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”有关,而且与任何重定向有关。