вместо этого они обрабатываются так, как будто / user является реальным каталогом, и как будто / user / username является допустимым файлом и существует (чего нет).
Что именноВы имеете в виду, как это?Что это показывает?
Хотите переписать или ** перенаправить?
Переписать = позвонить www.site.com/index.php?Agent=username, когда пользователь входит на сайт www.site.com/user/username
Redirect = перенаправить пользователя на другой URLпоэтому их адресное поле гласит: www.site.com/index.php?Agent=username
Прямо сейчас ваш код должен переписывать, а не перенаправлять, что, вероятно, вам и нужно.Просто проверяйте ...
Ваша проблема может заключаться в том, что имя пользователя, с которым вы тестируете, содержит заглавные буквы.Добавьте NC, чтобы сделать регистр нечувствительным к регистру.
RewriteRule ^user/([a-z]+)$ index.php?Agent=$1 [QSA,NC]
Если вы хотите разрешить другие символы, кроме букв az, вы можете добавить больше символов в класс символов или просто написать (.+)
, чтобы соответствовать любомусимвол.
Редактировать
В соответствии с вопросом ниже, я думаю, что бесконечное перенаправление происходит, потому что правило запускается снова (и снова), потому что перезапись соответствует новому индексузапрос .php.Простая проверка того, что цель перенаправления не является файлом, должна решить эту проблему.(-f = "это файл".! = условие отрицания.)
RewriteCond %{REQUEST_FILENAME} !-f