Apache 保留子文件夹时http到www?

Apache 保留子文件夹时http到www?,apache,.htaccess,mod-rewrite,httpd.conf,Apache,.htaccess,Mod Rewrite,Httpd.conf,我在.htaccess中有以下规则,可以从domain.tld重定向到www.domain.tld,它工作正常 RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 但是,当尝试访问domain.tld/forum时,我会被重定向到www.domain.tld 如何将所有非www重定向到www,同时保留访问者所在的任何子文件夹?使用请求U

我在.htaccess中有以下规则,可以从domain.tld重定向到www.domain.tld,它工作正常

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
但是,当尝试访问domain.tld/forum时,我会被重定向到www.domain.tld


如何将所有非www重定向到www,同时保留访问者所在的任何子文件夹?

使用
请求URI
变量:

RewriteEngine On

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

%{REQUEST_URI}
将具有完整的请求URI,而不是在
$1

中捕获的相对路径(来自当前目录),与原始代码相同,domain.tld/forum重定向到www.domain.tld确保这是htaccess中的第一条规则。清除浏览器缓存并在禁用缓存的Chrome dev工具中测试,以查看您获得的
301
URL。好的,我之前一直在使用firefox,我先尝试使用Chrome,但该规则根本不起作用。htaccess文件位于根目录中,由于我从未访问过它,而是直接访问了论坛,因此它没有重定向到www。现在我还将您的代码添加到另一个.htaccess in/forum中,它工作正常。然而,在firefox中,我仍然被从/forum重定向到root。清除缓存后,它工作正常。有没有办法在不清除缓存的情况下修复此问题?我当时正在现场进行修改,一些用户现在可能因此而被困住。不幸的是,缓存是在本地浏览器中维护的,您无法强制他们清理。浏览器再次调用web服务器并更新缓存需要一段时间。