为什么这个.htaccess会剥离包含文件夹?

时间:2009-04-02 04:28:10

标签: apache .htaccess mod-rewrite

这是来自/ ~new /

下的.htaccess
# invoke rewrite engine
    RewriteEngine On

# force domain.com to www.domain.com

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

访问http://domain.com/~new/hello时,会将其重写为http://www.domain.com/hello

正在添加www.,但由于某种原因,它忽略了/ ~new /子目录。

有谁知道可能导致这种情况的原因?仅供参考,TLD中有.htaccess但它是空的。我知道我可以使用/ ~new /到正则表达式替换字符串,但我更喜欢通用解决方案(为了便携性)而且我不确定为什么它首先剥离它。我也尝试过使用RewriteBase,但却无法使用它。

由于

1 个答案:

答案 0 :(得分:2)

我认为{REQUEST_URI}通常会出现在你的重写规则中:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www..*
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^([^.]*).(com|com/)
RewriteRule ^.*$ www.%1.%2%{REQUEST_URI} [R=301,L]