.htaccess在指定的HTTP HOST上重定向用户

时间:2012-08-01 12:35:06

标签: .htaccess mod-rewrite

由于一些内部问题和其他部分的拒绝,我需要一种方法来重定向来自指定域的所有访问。到目前为止,我已经提出以下建议:

RewriteCond %{HTTP_HOST} ^bad-domain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/bad-request.html

哪个不起作用。值得注意的是,我对重写并不擅长,但我正在努力学习。 我已经成功地在PHP中实现了这个,但这需要每个项目中的代码,这真的不是可行的方法。

所有建议,提示和答案都值得赞赏,这使我朝着正确的方向前进。

2 个答案:

答案 0 :(得分:2)

我没有看到为什么这不起作用的原因。请再次检查这些要点:

RewriteCond %{HTTP_HOST} ^bad-domain.com [NC,L]
RewriteRule ^(.*)$ http://mydomain.com/bad-request.html

AlexanderStøver指出:

RewriteEngine on

然后,如果将这些规则放在服务器配置中,则必须重新启动守护程序。所以可能像

/etc/init.d/apache2 restart

如果守护程序抱怨某事,请确保检查错误日志文件。应该是这样的:

/var/log/apache2/error_log

或您将日志写入的任何地方。

如果将这些规则放入“.htaccess”文件中(为什么?),请确保服务器实际配置为使用这些文件并允许覆盖文件路径:

AllowOverride:  FileInfo

使用日志记录来调试重写。 mod_rewrite提供了两种选择:

RewriteLog
RewriteLogLevel

答案 1 :(得分:0)

您还需要为图片添加规则。

RewriteCond %{REMOTE_ADDR} !^187\.10\.226\.42
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteCond %{REQUEST_FILENAME} !.(gif|jpe?g|png)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/maintenance.html [R=307,L]