Помогите понять почему не работает mod_rewrite и как сделать правильно.

программирование apache htaccess Mod Rewrite

В общем имеем:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^([a-z]+)\.([a-z]+)$
RewriteRule (.*) http://www.%1.%2/$1 [R=301,L]

RewriteRule ^(?:si)\b - [F,L]

RewriteCond %{HTTP_HOST} ^pub
RewriteRule .* /pub/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]

Получаем первое правило нужно чтобы любой урл без www перенаправлять на поддомен www. Данное правило работает.

Следующее правило тоже работает, его назначение закрыть все запросы к site.ru/si

Переходим к следующему правилу, оно как раз не работает... Его назначение все запросы начинающиеся с поддомена pub переадресовывать в папку pub. То есть например pub.site.ru/images/index.jpg должно быть переадресованно site.ru/pub/images/index.jpg но происходит следующее, он переадресовывает и начинает правила снова, не отдавая файл... Как быть? Это правило нужно чтобы вся статика хранилась в папке pub и не обрабатывалась index.php

Следующее правило работает. Оно перебрасывает все запросы на index.php

Примечание:
Я уже сделал. Получился такой htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^([a-z]+)\.([a-z]+)$
RewriteRule (.*) http://www.%1.%2/$1 [R=301,L]

RewriteRule ^(?:si)\b - [F,L]

RewriteCond %{HTTP_HOST} !^pub\.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]

RewriteCond %{HTTP_HOST} ^pub\.
RewriteCond %{REQUEST_URI} !^/pub/
RewriteRule .* /pub/$0 [L,NS]
Ответы:
"RewriteCond %{HTTP_HOST} ^pub
RewriteRule .* /pub/$0 [L]
Помогите мне решить подобную проблему:
Перенес сайт на хостинг mochahost.com. Кое-как все настроил.
файлы .htaccess ( а они есть как в корне, так и в других каталогах) оставил старые.
Сейчас работает главная страница, а все внутренние ссылки выдают HTTP Error 404. Не работают внутренние ссылки типа site.ru/collection/, а типа site.ru/test.php работают.
Я не знаю как проверить работает ли mod_rewrite и .htaccess. На сервере стоит не apache, а что-то другое.
Обратитесь в поддержку хостинга. Там помогут скорее


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.