Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用htaccess进行简单301重定向_Apache_.htaccess_Redirect_Url Redirection_Http Status Code 301 - Fatal编程技术网

Apache 使用htaccess进行简单301重定向

Apache 使用htaccess进行简单301重定向,apache,.htaccess,redirect,url-redirection,http-status-code-301,Apache,.htaccess,Redirect,Url Redirection,Http Status Code 301,我想从不再活动的页面重定向URL。URL以及所有子页面都应重定向到URL。这就是我目前所掌握的。htaccess: #Redirects RewriteEngine On RewriteRule https://tchibo.academyofsports.promo/ http://www.academyofsports.de/ [L,R=301] 不幸的是,它不能以这种方式工作。我做错了什么?这可能就是你想要的: RewriteEngine On RewriteCondition %{H

我想从不再活动的页面重定向URL。URL以及所有子页面都应重定向到URL。这就是我目前所掌握的。htaccess:

#Redirects

RewriteEngine On
RewriteRule https://tchibo.academyofsports.promo/ http://www.academyofsports.de/ [L,R=301]

不幸的是,它不能以这种方式工作。我做错了什么?

这可能就是你想要的:

RewriteEngine On
RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^/?(.*)$ http://www.academyofsports.de/$1 [L,R=301]
原因是重写规则只在请求URL的路径组件上运行,它看不到主机名。在http服务器主机配置和动态配置文件中,上述规则也应该同样适用

如果您对最初请求的路径不感兴趣,但希望将所有人重定向到入口点,则可以将上述操作简化为:

RewriteEngine On
RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^ http://www.academyofsports.de/ [L,R=301]
还有一个一般性提示:您应该始终希望将此类规则放置在http服务器虚拟主机配置中,而不是使用动态配置文件.htaccess样式的文件。这些文件是出了名的容易出错,难以调试,而且它们确实降低了服务器的速度。它们只是在您无法控制主机配置的情况下提供的最后一个选项:读:非常便宜的主机服务提供商,或者如果您的应用程序依赖于编写自己的重写规则,这显然是一个安全噩梦

针对您下面的评论,我想补充一点:

要实现特定映射,还可以添加异常规则:

RewriteEngine On

RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^/?agb\.html$ http://www.academyofsports.de/Datenschutz [L,R=301]

RewriteCondition %{HTTP_HOST} ^tchibo\.academyofsports\.promo$ [NC]
RewriteRule ^/?(.*)$ http://www.academyofsports.de/$1 [L,R=301]

问题在于,由于重写模块的内部逻辑,您必须重复每个规则的条件。有一两个粗糙的黑客可以绕过这一点,但事情变得很难保持非常快的方式。如果您需要指定多个这样的异常规则,那么最好选择一个

很有魅力,谢谢!但是如果我想重定向到呢?很高兴听到我能提供帮助:-我在问题中添加了一些关于此类例外规则的提示。玩得高兴嗯,现在我得到了内部服务器错误服务器遇到了内部错误或配置错误,无法完成您的请求。请与服务器管理员联系,告知他们发生此错误的时间,以及您在发生此错误之前执行的操作。有关此错误的详细信息,请参阅服务器错误日志。另外,,在尝试使用错误文件来处理请求时遇到了500个内部服务器错误。请考虑您得到的提示:如果您遇到HTTP状态500,您应该总是查看HTTP服务器错误日志文件。我认为正则表达式^ /Ab\\html $有问题,因为如果我删除它,所有的工作都会出错。好的还尝试了^/?agb\.html$。。