使用htaccess将所有非www重定向到www除了一个子目录。

时间:2014-06-05 14:28:13

标签: php regex apache .htaccess redirect

如果要将所有非www请求重定向到我的网站到www版本。我需要做的就是将以下代码添加到我的.htaccess文件中。

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

问题在于,当我编写例如mydomain.com/products-1(mydomain.com/products?category=1的隐藏URL)时,即使在.htaccess文件中指定了所有参数,所有参数也都可见,我得到www.mydomain.com/products-1?category=1

的输出网址(重定向后)

我该如何解决这个问题?上面的.htaccess代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

尝试更改RewriteRule

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] RewriteCond %{REQUEST_URI} !^/subfolder RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

我更喜欢这个,因为它会捕获所有* .domain.com。如果这不是您想要的,请使用原始的HTTP_HOST规则。

如果我的逻辑今天早上有效,这条规则应该重写任何不匹配的请求:

www.example.com 并且不包含

/子文件夹

要 www.domain.com/URI