所以我有一个RewriteCond,它变成:
domain.com/view.php?a=1
进入:
domain.com/artist/name
我的域名较短:dmn.com
,我想为艺术家提供短链接:
dmn.com/name
如何使dmn.com/name
重定向到domain.com/artist/name
,同时保持短链接不变?
.htaccess:
#rewrite profile requests
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule artist/(.*)$ view.php?a=$1 [QSA,NC,L]
httpd.conf:
<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中,而不会让Apache随便吐出来:
Warning: DocumentRoot [/var/www/html/artist] does not exist
答案 0 :(得分:1)
我认为您想要的不是实际的重定向,而是另一种重写。
您不能单独使用VirtualHost
。好吧,如果您将其指向相同的DocumentRoot
,并且可以复制规则或通过.htaccess
或Include
指令从公共文件加载它们,则可以。
您还可以将短域名添加到您的主域ServerAlias
<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>
然后将新规则添加到文件顶部:
RewriteBase /
RewriteCond %{HTTP_HOST} ex.com
RewriteRule ^(^.*) artist/$1
然后您现有的规则应接听。如果您想避免域名缩短而无法响应较长的网址,则可以在现有规则中添加类似的RewriteCond
:
RewriteCond %{HTTP_HOST} !ex.com