将所有 URL 重定向到 httpd.conf 中的单个页面

Posted

技术标签:

【中文标题】将所有 URL 重定向到 httpd.conf 中的单个页面【英文标题】:Redirect all URLs to a single page in the httpd.conf 【发布时间】:2016-11-19 01:55:49 【问题描述】:

我正在寻找一种将整个网站重定向到一个域的方法。我想在 httpd.conf 文件中执行此操作。例如我的虚拟主机看起来像:

<VirtualHost xx.xx.xx.xx>
ServerName website.com
ServerAdmin webmaster@website.com
ScriptAlias /cgi-bin/ /usr/local/apache2/htdocs/cgi-bin/
DocumentRoot /usr/local/apache2/htdocs/website
CustomLog logs/website/access_log combined
ErrorLog logs/website/error_log
Redirect / http://newwebiste.com
Redirect /xxx http://newwebiste.com
</VirtualHost>

目前上面的重定向仍然保留完整的 URL。

所以如果我想http://webiste.com/test/thispage.html,我会重定向到http://newwebsite.com/test/thispage.html。我只是希望它转到 newwebsite.com 并丢失其余部分。

所以..

http://webiste.com/test/thispage.html

http://newwebsite.com

我需要在 httpd.conf 中添加什么来实现这一点?

谢谢,

【问题讨论】:

【参考方案1】:

您已经注意到 Redirect 会捕获所有内容并将相同的 URI 发送到您不想要的目标,因此您将使用 RedirectMatch 来匹配所有可能的请求,但不会向目标 url 添加任何内容。

所以你可以使用:

重定向匹配^http://newsite.example.com/

作为关于 mod_rewrite 的附注: 我当然不会像其他人推荐的那样推荐 mod_rewrite,除非你手头确实有一项需要 mod_rewrite 才能提供的复杂性的任务,而事实并非如此。

旁注2: 例如,最好使用“example.com”域名,因为它不是一个有效的域,并且永久保留用于示例目的。

【讨论】:

【参考方案2】:

删除

Redirect / http://newwebiste.com
Redirect /xxx http://newwebiste.com

并添加

RewriteRule ^ http://newwebsite.com [L,R=301]

【讨论】:

重启 httpd 服务时收到无效命令警告。见下文 /usr/local/apache2/conf/httpd.conf 的第 1526 行的语法错误:无效命令“RewriteRule”,可能拼写错误或由未包含在服务器配置中的模块定义 我认为apache服务器需要更新。重写模块不存在,这就是整个事情失败的原因 也许你只需要在你的http.conf中取消注释LoadModule,看到没有mod_rewrite的apache真的很奇怪 推荐 mod_rewrite 用于简单的重定向不是要走的路。这是一个非常糟糕的建议。

以上是关于将所有 URL 重定向到 httpd.conf 中的单个页面的主要内容,如果未能解决你的问题,请参考以下文章

如何使用真实姓名将url重定向到httpd.conf中的另一个站点

重写 WordPress 主题文件,将所有内容重定向到 httpd.conf 中的 index.php

通过 httpd.conf 将 http 重定向到 https

用于将 ip 重定向到主机名的 Apache httpd.conf

通过 httpd.conf / htaccess 重定向目录中除一个文件之外的所有文件

Apache重定向URL