Назад | Перейти на главную страницу

Перезапись Apache 2.2 с псевдонимом работает только в режиме [R]

у меня есть mod_rewrite правило для передачи запросов на фронт-контроллер, но я не могу заставить его работать без [R] флаг.

Настройка не совсем проста, у меня есть каталог с псевдонимом внутри корневого веб-каталога, и я пытаюсь переписать его в этот каталог. Если я проигнорирую этот каталог, я смогу его переписать нормально.

Если я использую:

Alias /main /some/path/
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule /main/(.*)$ /main/index.php/$1 [R]

Он работает, как ожидалось, и index.php получает значение в качестве параметра, но поскольку он использует флаг [R], запрос на /main/some-param заканчивается как URI, заканчивающийся на /main/index.php/some-param и я стремлюсь сделать его прозрачным.

Без [R], запрос приводит к 404 и записи журнала в строках File does not exist: /mywebroot/main что кажется странным.

Есть ли что-нибудь об использовании Alias вот что вызывает это или это ошибка самого правила?

Это Alias это вызывает проблему - переписанная версия считается путем к реальному файлу (либо абсолютный путь файловой системы, либо путь относительно DocumentRoot). Если вы добавите PT флаг, Alias будет правильно применен.