у меня есть 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
будет правильно применен.