在根目录中,我通过www.
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.org$ [NC]
RewriteRule ^(.*)$ http://www.example.org/$1 [R=301,L]
</IfModule>
因此example.org
变为www.example.org
。
在子目录/products
中,我有另一个.htaccess
重写了使用带有斜杠而不是搜索查询的更好的URL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /products/
rewriteRule ^(([a-z0-9\-]+/)*[a-z0-9\-]+)$ $1/ [NC,R=301,L]
RewriteRule ^([a-z0-9-]+)/([0-9-]+)/$ products.php?name=$1&version=$2 [NC]
RewriteRule ^([a-z0-9-]+)/$ products.php?name=$1 [NC]
</IfModule>
出于某种原因,如果我输入example.org/products/
,则会强制执行www.
。子目录规则是否以某种方式干扰了该规则?我该怎么做呢?
答案 0 :(得分:1)
这是因为apache没有读取你的root htaccess。 Apache为子文件夹请求读取子文件夹htacess。要为/ products /强制使用www,您需要在/products/.htaccess
中添加以下规则RewriteEngine on
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [NE,L,R]