godaddy 子文件夹域 htaccess 重定向而不更改浏览器 url

godaddy subfolder domain htaccess redirect without changing browser url

Godaddy 豪华主机 Linux

主域:www.domain1.com 和其他 2 个托管域(www.domain2.com 和 www.domain3.com)在子文件夹中

www.domain2.com.htaccess 文件的内容:

Options +FollowSymLinks
RewriteEngine On
RewriteRule shop/tackle/(.*)/(.*)/ https://www.domain2.com/shop/products.php?subcat_id=&subcat2_id= [NC]

这将直接访问 www.domain2.com/shop/tackle/1/0/ 到 www.domain2.com/shop/products.php?subcat_id=1&subcat2_id=0

但改变了 url。我明白这是因为我在重写中包含了 https://www.domain2.com。但是我尝试:

Options +FollowSymLinks
RewriteEngine On
RewriteRule shop/tackle/(.*)/(.*)/ shop/products.php?subcat_id=&subcat2_id= [NC]

我收到 404 错误。我确实指出无法找到 URL /domain2/shop/tackle/1/0/。

显然重写包括 domain2 文件夹名称。我试图将请求的 URL www.domain2.com/shop/tackle/1/0/ 保留在 URL.

我错过了什么?

如果每个域都指向正确的 DocumentRoot。例如:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain1.com
DocumentRoot "/var/www"
</VirtualHost>

<VirtualHost *:80>
ServerName www.domain2.com
DocumentRoot "/var/www/domain2"
</VirtualHost>

<VirtualHost *:80>
ServerName www.domain3.com
DocumentRoot "/var/www/domain3"
</VirtualHost>

那我不认为 /domain2/ 将如何添加到相关请求中。但是,如果是,那么您应该尝试 RewriteBase 指令来帮助正确构建相对替换。像这样:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule shop/tackle/(.*)/(.*)/ shop/products.php?subcat_id=&subcat2_id= [NC]

这个link有更多信息:

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewritebase