使用是否正确
RewriteRule .? http://www.newdomain.com%{REQUEST_URI} [L,R=301]
将所有页面从旧域重定向到新域(包括 404)?
我在我的一个 htaccess 中有它。它有效,但我不知道它是否正确。
使用是否正确
RewriteRule .? http://www.newdomain.com%{REQUEST_URI} [L,R=301]
将所有页面从旧域重定向到新域(包括 404)?
我在我的一个 htaccess 中有它。它有效,但我不知道它是否正确。
它会起作用,但这不是我会做的方式。意思是“ .?
URL 包含 0 或 1 的任何东西”,这是匹配所有内容的一种有点奇怪的方式。
我接近它的方法是“捕获”匹配的 URL 并在目标中使用它。
RewriteRule ^(.*)$ http://www.newdomain.com$1 [L,R=301]
在这里,.*
表示“匹配任何内容”,^
and$
表示 URL 的开头和结尾,使其“匹配所有内容”,并且$1
指的是在第一组(并且仅在这种情况下)括号中匹配的任何内容。
看起来更复杂,现在我看一下,但更类似于如果您只想匹配一些 URL 或以不同方式构造目标时所需的规则。
OP 使用 REQUEST_URI 的解决方案比使用常见的 ^(.*)$ 和 $1 更好,而且更可取。
原因:
olddomain.com/path
会重定向到newdomain/path
完美。仅使用 $1olddomain.com/path/
将重定向到,newdomain/path/
但将删除缺少尾部斜杠的路径段。我建议只有一点改进:
使匹配模式更短。一个插入符号就足以匹配任何内容:
RewriteRule ^ http://www.newdomain.com%{REQUEST_URI} [L,R=301]