RewriteRule для поддоменов - PullRequest
       93

RewriteRule для поддоменов

3 голосов
/ 04 августа 2011

У меня проблема с моим rewriterule в моем .htaccess. Для начала у меня есть wlidcard на моем сайте (* .site.com)

Вот путь моего сайта:

/home/www/static/
/home/www/home/
/home/www/.htaccess

Итак, я сделал .htaccess в корне моего сайта с:

RewriteCond %{HTTP_HOST} static.site.com [NC]
RewriteRule !^static/ static%{REQUEST_URI}

RewriteCond %{HTTP_HOST} www.site.com [NC]
RewriteRule !^home/ home%{REQUEST_URI}

Эти перенаправления работают довольно хорошо, но когда я хочу перейти, например:

http://www.site.com/img

Есть проблема, она перенаправляет меня в http://www.site.com/home/img/

Но когда я набираю http://www.site.com/img/ с окончательной обратной косой чертой, все в порядке.

Спасибо за ответы:)

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Попробуйте:

RewriteRule ^(.*)$ $1/ [R=301,L]

Это должно добавить пропущенную косую черту для вас, если она отсутствует. Вы хотели бы включить флаг 'L', чтобы сообщить механизму перезаписи, что это ваша последняя перезапись, и не применять другое правило поверх этого.

1 голос
/ 05 августа 2011

Не совпадают запросы, которые сопоставляются с существующими каталогами

RewriteCond %{REQUEST_FILENAME} !-d

Если это не сработает, попробуйте сопоставить, является ли запрос плюс другая косая черта каталогом?

RewriteCond %{REQUEST_FILENAME}/ !-d
0 голосов
/ 08 сентября 2011

Решено:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,6}|/|#(.*))$
RewriteRule ^(.*)$ $1/ [R=301,L]
...