Почему этот .htaccess удаляет содержащую папку?

Это из .htaccess, расположенного в /~new/

# 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, но не смог заставить его работать.

Спасибо


person alex    schedule 02.04.2009    source источник


Ответы (1)


Я думаю, что обычно {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]
person AaronLS    schedule 02.04.2009
comment
Мне пришлось вставить http:// перед www в RewriteRule, и это сработало! Кроме того, поскольку мой сайт находится на австралийском домене, я изменил ваш (com|com/) на (com.au|com.au/). Спасибо! - person alex; 02.04.2009
comment
На самом деле, я закончил тем, что изменил эту последнюю часть на ([a-z\.]{2,6} - person alex; 02.04.2009