【发布时间】:2021-08-24 23:51:14
【问题描述】:
背景:
- 我们的 DNS 指向新服务器。
- Apache 服务器有一个名为 example 的目录
- 示例目录有一个用于重定向的htaccess文件,代码如下
问题是:我们需要它来重定向 URL 的任何变体,即:http://example.com、https://example.com、http://example.com/filename.html、https://example.com/directory/filename.html 等。到另一台服务器上的特定页面。强>
到目前为止,我们有以下代码,它适用于 https,但不适用于 http。
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://differenturl/login/login.html [R=301,L]
我觉得有一个简单的答案,但似乎找不到! **编辑:为了澄清 - 不工作,我的意思是我没有使用 http 重定向到 https://differenturl/ 等。它仅适用于 https。 http 将我路由到这一切所在的服务器的主页。而且该服务器的域名与上述任何服务器不同。
【问题讨论】:
-
请求 HTTP 时会发生什么? “名为示例的目录”的意义是什么 - 这是文档根目录吗?您发布的规则也不会重定向
www.example.com(即 www 子域) - 这是一个问题吗?实际上,您是否需要检查Host标头?您是否在第一台服务器上托管多个域? -
感谢您的回复。当我尝试访问 http 版本时,我被路由到服务器主页......所以:-baseserver.com/example 有 htaccess 文件。 -example.com 的 DNS 指向 baseserver.com/example(也使用虚拟主机设置) -使用上述 htaccess,example.com 成功重定向到 differenturl 等...如上 -使用 example.com我在 baseserver.com 的根页面结束。
-
"DNS for example.com 指向 baseserver.com/example" - 请记住,如果在
baseserver.com/处有另一个.htaccess文件,那么这也会影响example.com,如果example.com指向主域的子目录。 (严格来说,example.com将指向一个文件系统路径——example.com不知道这是否恰好解析到与baseserver.com/example相同的位置。)
标签: apache .htaccess redirect mod-rewrite