所以我有一个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中,而不返回:
Warning: DocumentRoot [/var/www/html/artist] does not exist发布于 2018-10-09 17:39:10
我认为你想要的不是真正的重定向,而是另一次重写。
您不能用单独的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那么你现有的规则应该会被采纳。如果要避免缩短的域响应较长的urls,可以在现有规则中添加类似的RewriteCond:
RewriteCond %{HTTP_HOST} !ex.comhttps://stackoverflow.com/questions/52725092
复制相似问题