我对一些redirect
规则感到困惑,我需要在production
中做。我已经看过a lot of examples in stackoverflow
了,他们已经建立了一些关于重定向的knowledge
。然而,我没有任何特殊的条件,除了重定向到一个新的url与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>
谢谢你的帮助
首先,RewriteCond表示查询字符串应该由一个或多个字符组成。如果您希望重定向即使没有查询字符串也能工作,只需删除条件。否则,你可能只是想让它"。+'来明确它至少应该是一个字符。
第二,RewriteRule
中有两个错误。
首先,使用(.*)
捕获路径-但您永远不会将其添加到新字符串中。
其次,通过以?
结束规则,您将擦除原始查询字符串。
规则应该是这样的:
RewriteRule (.*) http://www.newproductionserver.com/$1 [R=301,L]
$1
的意思是"使用你在第一个括号中捕获的东西",删除?
的意思是"不要替换查询字符串"。
此外,为了使任何重写工作,您需要首先激活mod_rewrite:
RewriteEngine On