在 VirtualHost 中重定向文档根目录

在 VirtualHost 中重定向文档根目录

我正在尝试将我的域名重定向到新的文档根目录如果 cookie 值是某样东西。我确实设置了重写,并且它工作正常。

RewriteLog "/home/user/dev/logs/rewrite.log"
RewriteLogLevel 3
RewriteCond %{HTTP_COOKIE} !^new_layout_v1_dev$
RewriteCond $1 !^php5.fastcgi [NC]
RewriteRule ^/(.*)$ /home/user/dev/user.dev/htdocs/$1 [C]

我遇到的问题是,该网站有一个rewrite.conf配置文件来重写 SEO 友好 URL。当文档根目录重定向将我重定向到新的文档根目录时,它不会加载下一个重写或新文档根目录中的配置。

错误:

The requested URL /testime-pilte-2655600.html was not found on this server.

由于我们在 Web 应用程序中使用 SEO 友好的 URL,并通过重写规则将它们重定向到正确的 php 文件,因此当rewrite.conf未加载时,网页将显示not found错误。

所以我的问题是,如何使文档根重写工作,以便它也能加载新的文档根重写配置。

答案1

如果rewrite.conf被包含在<Directory>标签中或其重写包含在<Directory>标签内,请尝试将其移出并仅驻留在 VirtualHost 级别。

答案2

这些是我最终重写的结果并且有效:

# Rewrite to old design
RewriteCond $1 !^php5.fastcgi [NC]
RewriteCond %{HTTP_COOKIE} ^((?!new_layout).)*$
RewriteRule ^/(.*)$ /home/user/dev/user.dev/htdocs/$1 [L]

# Rewrite to new design
RewriteCond $1 !^php5.fastcgi [NC]
RewriteCond %{HTTP_COOKIE} !^new_layout$ 
RewriteRule ^/(.*)$ /home/user/dev/user.dev/htdocs/$1 [L]

相关内容