【发布时间】:2012-07-11 10:23:47
【问题描述】:
我的域 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 的解决方案: Generic htaccess redirect www to non-www 但认为这应该是一种方法,因为这种麻烦不仅与“非www到www”有关,而且与任何重定向有关。
【问题讨论】:
标签: mod-rewrite