我有一个 centos 6.5 网络服务器,使用虚拟主机在 1 个 IP 地址上运行 2 个网站。
domain1.com 和 domain2.com - 都托管在上述同一个 Web 服务器上。
我需要将大约 40 个页面从域 1 重定向到域 2,“例如”:
domain1.com/page1 -> domain2.com/new-page-1
domain1.com/welcomepage -> domain2.com/new-welcome-page
domain1.com/johnsmith -> domain2.com/elvis
domain1.com/test -> domain2.com/production
*请注意,我重定向的页面不在同一结构/名称下,而是转到完全不同的结构/名称。
有人能建议我可以/需要做什么来完成这项任务吗?
编辑 #1 我尝试通过 httpd.conf 文件中的 VirtualHost 部分执行此操作。请参阅下面的条目。
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
RedirectPermanent / http://www.domain2.com/page12345/
</VirtualHost>
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
RedirectPermanent /AboutUs/Founders http://www.domain2.com/about-us-founders/
</VirtualHost>
在上述两个条目中,只有第一个条目正常工作并正确重定向。第二个条目重定向到:http://www.domain2.com/page12345/AboutUs/Founders 有任何想法吗?
答案1
在这种情况下,最简单的解决方案往往是最好的;增加 40重定向指令到 domain1 VirtualHost 配置,其中您唯一需要做的选择是重定向的永久或临时状态:
<VirtualHost *:80>
Servername domain1.com
RedirectTemp /page1 http://domain2.com/new-page-1
RedirectPermanent /welcomepage http://domain2.com/new-welcome-page
</VirtualHost>
回应上面的编辑#1:
当在 ServerName 或 ServerAlias 中使用具有相同域名的多个 VirtualHost 节时,只有第一个有效,后续的将被忽略。
单个 VirtualHost 节可以包含多个 Redirect 指令,因此将第二个 Redirect 指令移动到第一个 virtualhost 节并删除第二个。
第二阅读上面链接中的手册 确实有帮助:
任何以 URL-path 开头的请求都会在目标 URL 的位置向客户端返回重定向请求。匹配的 URL-path 以外的其他路径信息将附加到目标 URL。
例子:Redirect /service http://foo2.example.com/service
如果客户要求http://example.com/service/foo.txt,它将被告知访问http://foo2.example.com/service/foo.txt
这与您对 www.domain1.com/AboutUs/Founders 的请求所观察到的情况完全一致,触发RedirectPermanent / http://www.domain2.com/page12345/
将原始请求重定向到 www.domain2.com/page12345/AboutUs/Founders
您可以通过正确排序 Redirect 行来解决此问题,因为 Apache 将按顺序处理 Redirect 指令。从最长的 URL 路径开始,否则它们会被较短目录上的有效重定向捕获。
<VirtualHost *:80>
Servername domain1.com
Redirect /AboutUs/Founders http://www.domain2.com/about-us-founders/
Redirect /AboutUs/ http://www.domain2.com/about-us/
Redirect /index.html http://www.domain2.com/page12345/
RedirectMatch ^ http://www.domain2.com/page12345/
</VirtualHost>
对于仅包含以下内容的重定向请求http://domain1.com你^
经常使用/
,最好也明确地重定向 IndexDocument,因此 /index.html 条目。