htaccess перезаписывает проблему URL - PullRequest
0 голосов
/ 25 декабря 2010

Я успешно переписываю страницу профиля пользователя таким образом:

RewriteRule ^ ([a-z0-9] +) $ /profile/profile.php?u=$1 [NC] RewriteRule ^ ([a-z0-9] +) / $ /profile/profile.php?u=$1 [NC]

поэтому site.com/username было site.com/profile.php?u=username

Easy.

Но сейчас .. Мне бы хотелось, чтобы стандартные страницы и папки были такими ...

site.com / Войти site.com/help

и т. Д. ... но сайт считает, что это имена пользователей ... Я добавил правила, чтобы различать их, но они, похоже, не подхватывают - то есть приведенное ниже не работает ..

RewriteRule ^ / login / twitter / $ /login/twitter/index.php [NC]

Он считает, что логин - это имя пользователя.

Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 26 декабря 2010

Вы должны использовать условные перезаписи перед RewriteRule, чтобы пропустить зарезервированные имена, файлы и папки, которые уже существуют на сервере:

RewriteCond %{REQUEST_URI} !^/reserved1 
RewriteCond %{REQUEST_URI} !^/reserved2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

REQUEST_URI - ресурс, запрашиваемый в строке HTTP-запроса. Первые две строки означают, что URI не должен начинаться с ваших зарезервированных имен и должен пропускать / reserved1 и / reserved2

REQUEST_FILENAME совпадает с переменной CGI SCRIPT_FILENAME и содержит полный путь локальной файловой системы к файлу или каталогу, соответствующему запросу. Последние две строки означают пропуск реальных файлов и директорий, которые уже существуют на сервере.

...