首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache:使用VirtualHost重定向到URL并应用RewriteCond?

问Apache:使用VirtualHost重定向到URL并应用RewriteCond?
EN

Stack Overflow用户
提问于 2018-10-09 16:01:26
回答 1查看 924关注 0票数 0

所以我有一个RewriteCond,它会变成:

代码语言:javascript
复制
domain.com/view.php?a=1

转入:

代码语言:javascript
复制
domain.com/artist/name

我有一个较短的域名:dmn.com,我想为艺术家提供短链接:

代码语言:javascript
复制
dmn.com/name

如何使dmn.com/name重定向到:domain.com/artist/name,同时保持短链接的策略?

.htaccess:

代码语言:javascript
复制
#rewrite profile requests
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule artist/(.*)$ view.php?a=$1 [QSA,NC,L]

httpd.conf:

代码语言:javascript
复制
<VirtualHost *:80>
    DocumentRoot /var/www/html/ // <-- ??? not sure what to put here
    ServerName dmn.com
    ServerAlias www.dmn.com
</VirtualHost>

由于目录"/artist“实际上并不存在(因为它正在被重写),我似乎无法将/var/www/html/artist放到VirtualHost配置的DocumentRoot中,而不返回:

代码语言:javascript
复制
Warning: DocumentRoot [/var/www/html/artist] does not exist
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-09 17:39:10

我认为你想要的不是真正的重定向,而是另一次重写。

您不能用单独的VirtualHost来完成它。如果您将其指向同一个DocumentRoot并复制您的规则,或者通过.htaccess或Include指令从公共文件加载它们,您就可以这样做。

还可以将短域名添加到主域ServerAlias中。

代码语言:javascript
复制
<VirtualHost *:80>
    # This should point to your current config
    DocumentRoot /var/www/artists_profiles/
    ServerName example.com
    ServerAlias www.example.com ex.com www.ex.com
</VirtualHost>

然后将新规则添加到文件的顶部:

代码语言:javascript
复制
RewriteBase /
RewriteCond %{HTTP_HOST} ex.com
RewriteRule ^(^.*) artist/$1

那么你现有的规则应该会被采纳。如果要避免缩短的域响应较长的urls,可以在现有规则中添加类似的RewriteCond:

代码语言:javascript
复制
RewriteCond %{HTTP_HOST} !ex.com
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52725092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档