我正在尝试为
执行301永久重定向assets.example.com/x/y/z?a=b
到
example.com/x/y/z?a=b
除非
x == assets
此处的上下文是一个CDN,它向assets.example.com发出原始请求。 assets.example.com子域共享相同的DocumentRoot,因此与example.com相同的robots.txt。因此,理论上可以通过assets.example.com子域而不是example.com访问任何页面。我想重定向assets.example.com子域下的所有内容,除了实际资产(都在/ assets /目录下)。
答案 0 :(得分:1)
在这里 - 我用Apache 2.2进行了测试。它应该适用于任何最新版本。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/assets
RewriteCond %{HTTP_HOST} ^assets\.example\.com
RewriteRule ^/(.*) http://example.com/$1 [R=301,L]
这里的逻辑是重写条件是AND并在一起。它只是简单地介绍了重定向所需的事情。首先,它测试第一个路径段是否不是/ assets。然后它测试主机名是否为assets.example.com。如果这两个都是真的,那么它会执行永久重定向并结束规则集。