Apache:使用 VirtualHost 重定向到 URL 并应用 RewriteCond?
Apache: Using VirtualHost redirect to URL with RewriteCond applied?
所以我有一个 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= [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”实际上并不存在(因为它正在被重写),我似乎无法在没有 Apache 吐回的情况下将 /var/www/html/artist
放入 VirtualHost 配置的 DocumentRoot 中:
Warning: DocumentRoot [/var/www/html/artist] does not exist
我认为你想要的不是真正的重定向,而是另一个重写。
你不能用单独的 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/
那么您现有的规则应该会生效。如果您想避免缩短的域名响应较长的网址,您可以在现有规则中添加类似的 RewriteCond
:
RewriteCond %{HTTP_HOST} !ex.com
所以我有一个 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= [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”实际上并不存在(因为它正在被重写),我似乎无法在没有 Apache 吐回的情况下将 /var/www/html/artist
放入 VirtualHost 配置的 DocumentRoot 中:
Warning: DocumentRoot [/var/www/html/artist] does not exist
我认为你想要的不是真正的重定向,而是另一个重写。
你不能用单独的 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/
那么您现有的规则应该会生效。如果您想避免缩短的域名响应较长的网址,您可以在现有规则中添加类似的 RewriteCond
:
RewriteCond %{HTTP_HOST} !ex.com