将所有 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