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