1

这是我的 .htaccess 文件中的代码,该文件位于我的共享主机的根目录中。

 RewriteEngine On 
 RewriteCond %{HTTP_HOST} !^www\. 
 RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
 RewriteCond %{REQUEST_FILENAME}!-f  
 RewriteCond %{REQUEST_FILENAME} !-d  
 RewriteRule ^([a-zA-Z0-9\-]+)?$ interest.php?interest=$1 [QSA,L] 
 RewriteRule ^([a-zA-Z0-9\_\-]+)?/$ interest.php?interest=$1 [QSA,L]

问题是,在同一个目录中是我添加域的文件夹。当我尝试访问它们时,第二行正在创建问题并将其重定向到我的主域。我希望 .htaccess 仅影响根文件夹而不影响其子文件夹。我尝试在这里阅读其他类似的问题,并尝试相应地更改我的 htaccess,但问题仍未解决。

例如。它的重定向

mysubdomain.mydomain.com

www.mydomain.com/mysubdomainfolder
4

2 回答 2

1

有这样的第一条规则:

RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

然后清除浏览器缓存并重新启动浏览器。

于 2013-02-27T16:01:32.757 回答
0

好吧,.htaccess 文件旨在递归应用。

如果您不希望重定向,您可以尝试在与您的添加域对应的每个子文件夹中放置一个 .htaccess,如果您不希望重定向,或者如果您需要它们,则使用备用重写规则。

此外,您可能希望为规则添加另一个重写条件,例如您添加的域是 blah.com,您可以添加

RewriteCond %{HTTP_HOST} !^(.*.)?blah.com

编辑:我应该添加新的重写条件应该低于 RewriteCond %{HTTP_HOST} !^www。

Edit2:好的,那么子域。在这种情况下,您基本上需要添加一个重写条件,指定如果它是一个已知的子域,则不应用重写规则。例如:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTP_HOST} !^(subdomain1|subdomain2|subdomain3)\.domain\.com
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

现在 subdomain1.domain.com 不会重定向(或 subdomain2/3),www.domain.com 不会重定向,但其他任何东西都会。

于 2013-02-27T05:58:04.433 回答