1

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>

感谢您的帮助

4

1 回答 1

2

首先,您的 RewriteCond 表示您的查询字符串应包含一个或多个字符。如果您希望即使没有查询字符串也能进行重定向,只需删除条件即可。否则,您可能只想将其设为 '.+' 以阐明它应该至少是一个字符。

其次,有两个错误RewriteRule

首先,(.*)您正在捕获路径 - 但您永远不会将其添加到新字符串中。

其次,通过以 a 结束您的规则?,您将删除原始查询字符串。

规则应如下所示:

RewriteRule (.*) http://www.newproductionserver.com/$1 [R=301,L] 

意思是“使用你在第一个括号中捕获的$1东西”,删除?意思是“不替换查询字符串”。

此外,为了让任何重写都起作用,您需要首先激活 mod_rewrite:

RewriteEngine On
于 2013-04-23T11:26:06.263 回答