2010-01-23 3 views
1

Скажем, я хочу, чтобы поддержать URLs как твиттер, где: twitter.com/username перенаправляет twitter.com/user_name.php?user=usernamemod_rewrite старшинство

У меня есть следующие

RewriteRule ^(.*)$ user_name.php?user=$1 

И это работает отлично. Но проблема в том, что все, включая twitter.com/index.php, будет, конечно, перенаправлено на user_name.php

Как я могу создать исключения или приоритет, чтобы «реальные файлы» не переписывались? Я попытался добавить явное правило для index.php до и после этого, но он, похоже, не вступает в силу.

ответ

2

Вам нужно добавить RewriteCond для этого

RewriteCond %{REQUEST_URI} !-f [OR] # for existing files 
RewriteCond %{REQUEST_URI} !-d # for existing directories 
RewriteRule ^(.*)$ user_name.php?user=$1 
+0

Хорошо, что это гораздо лучше, чем мое решение - если он работает. Я должен попробовать это в проекте, который у меня есть. Не могли бы вы объяснить, что здесь происходит? – Erik

+0

Это не работает для меня, domain.com/index.php все еще использует правило перезаписи для user_name.php – catbelly

+0

На самом деле вы были довольно близки, это работает для меня: RewriteCond% {REQUEST_FILENAME}! -f – catbelly

Смежные вопросы