我对redirect
中需要做的一些production
规则感到困惑。我已经看过a lot of examples in stackoverflow
了,他们已经建立了一些关于重定向的knowledge
。但是我没有任何特殊条件,除了重定向到exact query string
的新网址,无论它如何形成appended
。
由于它正在制作中,我确实有尝试和捕捉的闲暇,所以我想尽可能避免错误。这就是我认为应该做的事情:
<VirtualHost X.X.X.X:80>
ServerName mypoductionserver.com
ServerAlias cs.myproductionserver.com
LogLevel warn
ErrorLog /var/log/apache2/productionerror.log
CustomLog /var/log/apache2/productionaccess.log combined
RewriteCond %{QUERY_STRING} .
RewriteRule (.*) http://www.newproductionserver.com/? [R=301,L]
</VirtualHost>
帮助
答案 0 :(得分:2)
首先,您的RewriteCond表示您的查询字符串应包含一个或多个字符。如果您希望重定向工作,即使没有查询字符串,只需删除条件即可。否则,你可能只想把它变成'。+'来澄清它至少应该是一个字符。
其次,RewriteRule
中有两个错误。
首先,您的(.*)
正在捕捉路径 - 但您永远不会将其添加到新字符串中。
其次,通过使用?
结束规则,您将删除原始查询字符串。
规则应该如下:
RewriteRule (.*) http://www.newproductionserver.com/$1 [R=301,L]
$1
表示“使用您在第一个括号中捕获的内容”,删除?
表示“并且不替换查询字符串”。
另外,为了使任何重写都能正常工作,你需要先激活mod_rewrite:
RewriteEngine On