Хех, это Апач, подталкивающий вас к хитрому порядку обработки. Оказывается, тот факт, что вы поместили свою команду Rewrite
в начало файла, не означает, что это то, что фактически выполняется первым. Вместо этого сначала запускается mod_rewrite
, а затем mod_alias
(который отвечает за обработку Rewrite
).
Это приводит к следующему преобразованию для mod_rewrite
:
newsletter --> index.php?/newsletter
mod_rewrite
успешно устанавливает строку запроса на ?/newsletter
, но поскольку у вас не указан флаг PT
, не передает переписанный URL index.php
на mod_alias
. Поэтому mod_alias
по-прежнему видит путь /newsleter
, перенаправляет его на http://sub.domain.com/newsletters/may2010
и добавляет (теперь измененную) строку запроса ?/newsletter
в конец, чтобы закрыть сделку. Прикольные вещи, верно?
В любом случае, быстрое решение для этого сценария - игнорировать запросы только для newsletter
:
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !newsletter$
RewriteRule ^(.*)$ index.php?/$1 [L]