AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 976110
Accepted
williamsdb
williamsdb
Asked: 2019-07-22 08:55:04 +0800 CST2019-07-22 08:55:04 +0800 CST 2019-07-22 08:55:04 +0800 CST

将整个域重定向到 Apache 虚拟主机中另一个域上的单个页面

  • 772

有很多关于将整个域重定向到另一个域的信息,但我找不到任何关于将域重定向到第二个域上的特定页面的已回答问题。这是我设置的:

<VirtualHost *:80>
    ServerName www.domain2.org.uk
    ServerAlias domain2.org.uk domain1.co.uk www.domain1.co.uk
    DocumentRoot /var/www/html
    ErrorLog logs/mkt-error_log
    CustomLog logs/mkt-access_log common
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
    RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
</VirtualHost>

这会重定向,但只是重定向到 domain2 的默认页面。如何更改它以使其进入特定页面?

apache-2.4
  • 1 1 个回答
  • 2242 Views

1 个回答

  • Voted
  1. Best Answer
    MrWhite
    2019-07-22T13:46:20+08:002019-07-22T13:46:20+08:00
    RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
    

    这已经完成了您需要的操作并将所有内容重定向到https://www.domain2.org.uk/specific-page/- 如RewriteRule 替换中所述。(尽管该RewriteRule 模式不必要地捕获了反向引用。)

    RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
    

    但是(除非这是示例代码片段中的错字),条件(检查Host标头是否以结尾domain1.co.uk)将导致重定向循环(domain2.org.uk显然不是 domain1.co.uk,因此始终满足条件)。以下RewriteRule重定向所有内容。

    此指令中的CondPatternRewriteCond需要通过以下任一方式进行更改:

    • 删除!(否定)前缀。(尽管尾随$仍会导致以点结尾的 FQDN 出现问题。)
    • 或者,更改为!domain2\.org\.uk$

    但是...由于您显然可以访问服务器配置并且正在虚拟主机上下文中工作,因此您不应该真正为此使用 mod_rewrite 。您应该创建一个单独的虚拟主机,一个用于domain1,另一个用于domain2并使用 mod_aliasRedirectMatch指令代替...不太容易出错,效率更高。

    例如:

    <VirtualHost *:80>
        ServerName domain1.org.uk
        ServerAlias www.domain1.org.uk
        RedirectMatch 301 ^ https://www.domain2.org.uk/specific-page/
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName domain2.org.uk
        ServerAlias www.domain2.org.uk
        DocumentRoot /var/www/html
        ErrorLog logs/mkt-error_log
        CustomLog logs/mkt-access_log common
    </VirtualHost>
    

    注意:这些虚拟主机仅适用于 HTTP(端口 80),因此您自然需要为 HTTPS(端口 443)重复此重定向。

    • 3

相关问题

  • Apache2 - SSL 不工作

  • Apache <VirtualHost> 标签,如果客户端的 IP = x 则不重定向... 怎么做?

  • 我无法启用我的网站?[关闭]

  • SELinux 阻止 Apache 写入文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve