Apache 使用ServerAlias重定向并保留路径

Apache 使用ServerAlias重定向并保留路径,apache,redirect,virtualhost,Apache,Redirect,Virtualhost,我有一个像www.myverylongdomainname.com这样的网站,这是我的主域名,我还有一个域名www.myshortur.com,它重定向到较长的域名,设置如下: <VirtualHost *:80> ServerAdmin blah@myverylongdomainname.com ServerName myverylongdomainname.com ServerAlias www.myverylongdomainname.com S

我有一个像www.myverylongdomainname.com这样的网站,这是我的主域名,我还有一个域名www.myshortur.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>

服务器管理员blah@myverylongdomainname.com
ServerName myverylongdomainname.com
ServerAlias www.myverylongdomainname.com
服务器别名myshorturl.com
ServerAlias www.myshortur.com
DocumentRoot/var/www/myverylongdomainname/public\u html/dev

我们使用简短的URL来做广告,我希望能够把它放在一个平面广告中:“www.myshortur.com/keyword”,并让用户最终访问“myverylongdomainname.com/keyword”。但是当用户被重定向到完整的URL时,我不知道如何保留路径。我用谷歌搜索了一下,但我甚至不知道该用什么关键词

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

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

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


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

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