由于一些内部问题和其他部分的拒绝,我需要一种方法来重定向来自指定域的所有访问。到目前为止,我已经提出以下建议:
RewriteCond %{HTTP_HOST} ^bad-domain.com [NC]
RewriteRule ^(.*)$ http://mydomain.com/bad-request.html
哪个不起作用。值得注意的是,我对重写并不擅长,但我正在努力学习。 我已经成功地在PHP中实现了这个,但这需要每个项目中的代码,这真的不是可行的方法。
所有建议,提示和答案都值得赞赏,这使我朝着正确的方向前进。
答案 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]