0

尝试使用 htaccess 实现子域。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTP_HOST} !^www.
    RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.domain.com(.*)$
    RewriteRule ^(.*)$ http://domain.com/index.php?/public_site/main/%1/$1 [L]
</IfModule>

当我输入ahser.domain.com时,浏览器 URL 正在更改。在 RewriteRule 中使用绝对 URL 时,是否有一个 htaccess 选项不让这种情况发生?

4

1 回答 1

0

不要重写为包含域的完整 URL。这会产生重定向,因为它会转到不同的网站!你可以放在microsoft.com那里;那么它如何在没有重定向的情况下工作?

您需要做的是确保网页在原始域下工作。因此,当客户询问myname.domain.com/...如何将其重写为myname.domain.com/index.php?public_site/main/myname/.... 保持域相同。index.php?可以使它们在任何这些域中工作。例如,即使这样也可以:

http://OTHER.domain.com/index.php?public_site/main/MYNAME/...

即设置它,以便哪个虚拟主机访问该路径并不重要。

一旦你有了它,重写就可以做到:

# will not trigger redirect
RewriteRule ^(.*)$ /index.php?/public_site/main/%1/$1 [L]

您必须小心不要引入循环,因为您现在将 URL 重定向到与相同域中的相同重写规则匹配的更长 URL。如果RewriteCondURL 已经以/index.php?public_site/.

于 2012-03-10T03:26:07.000 回答