【问题标题】:Redirecting with ServerAlias with preserving the path使用 ServerAlias 重定向并保留路径
【发布时间】:2016-03-14 00:07:29
【问题描述】:

我有一个像 www.myverylongdomainname.com 这样的站点,这是我的主域,我还有一个域 www.myshorturl.com 可以重定向到更长的域,设置如下:

<VirtualHost *:80>
    ServerAdmin blah@myverylongdomainname.com
    ServerName myverylongdomainname.com
    ServerAlias www.myverylongdomainname.com
    ServerAlias myshorturl.com
    ServerAlias www.myshorturl.com
    DocumentRoot /var/www/myverylongdomainname/public_html/dev
</VirtualHost>

我们使用短 URL 进行广告,我希望能够将其放在平面广告中:“www.myshorturl.com/keyword”并让用户最终访问“myverylongdomainname.com/keyword”。但是当用户被重定向到完整的 URL 时,我不知道如何保留路径。我做了一些谷歌搜索,但我什至不确定要使用什么关键字。

【问题讨论】:

  • 您是说当使用 ServerAlias 完成重定向时 Apache 没有保留路径?有趣的是,我可以说我确信它确实如此。如果我错了,那么 .htaccess(或 VirtualHost 中的目录)和 RewriteRule 就是您需要寻找的。当我起床时,我会首先检查 ServerAlias,对此我真的很好奇,我会安全地设置 ServerAlias 并在阅读您的问题之前忘记其余的 - 我仍然会这样做,但我明天会看看以确保。如果它不这样做有什么意义......
  • 谢谢,我可以告诉你它没有在我的设置中保留路径,但我没有设置任何目录规则。

标签: apache redirect virtualhost


【解决方案1】:

好的,我从一位朋友那里得到了帮助,但这里是其他人的答案:

您无法使用 ServerAlias 保留路径(至少,我找不到方法)。解决方案是将 myshorturl.com 设置为它自己的站点 - 设置它自己的 VirtualHost 指向它自己的目录。在该目录中,使用以下代码添加一个 .htaccess 文件 - 该文件重定向到新 URL 并保留路径。

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !myshorturl.com$ [NC]
RewriteRule ^(.*)$ http://myverylongdomainname.com/$1 [L,R=301]

以上代码来源:How to 301 redirect an entire domain while preserving the path

我已经测试并确认了这种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 2017-10-28
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多