Ваше правило:
RewriteRule to where
... перезапишет URL-адрес, соответствующий - , и заменит его URL-адресом, представляющим запрос на / где . При определенных обстоятельствах mod_rewrite может попытаться повторно добавить то, что Apache считает PATH_INFO , что может создать ситуацию, подобную следующей:
path/to/somewhere -> PATH_INFO = /to/somewhere
path/to/somewhere -> /where
(append PATH_INFO) -> /where/to/somewhere
Чтобы проверить, так ли это в вашем сценарии, вы можете добавить флаг DPI
к RewriteRule
, чтобы отбросить PATH_INFO, если он существует. Это будет выглядеть так:
RewriteRule to where [DPI]
В этом случае вы получите только URL /, где . Если вы хотите заменить на на , где , сохраняя при этом оставшуюся часть URL, вам потребуется правило, похожее на это:
RewriteRule (.*?/)?to(/.*)? $1where$2
Что касается отладки вашего набора правил, если у вас есть доступ к конфигурации Apache, вам гораздо лучше использовать директиву RewriteLog
с достаточно высоким RewriteLogLevel
. Если у вас нет доступа к конфигурации, вы в значительной степени ограничены тем, что делаете что-то похожее на то, что вы пытаетесь сделать сейчас.