mod_rewrite проблема

У меня есть это правило перезаписи для доступа к profile.php?user=username с mysite.com/username..

Проблема в том, что он игнорирует мой css, даже если я использую полный URL-адрес, и что странно, это то же самое, если я перехожу к обычному URL-адресу, profile.php?user=username. Но если я удалю свой файл htaccess, css заработает.

RewriteEngine on
RewriteRule (.*) profile.php?user=$1 [QSA,L]

В чем проблема? Заранее спасибо :>


person Community    schedule 21.07.2009    source источник


Ответы (3)


Вы можете использовать условие для запуска вашего правила только в том случае, если URL-адрес, который вы пытаетесь получить, не разрешается в файл или каталог.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) profile.php?user=$1 [QSA,L]

Это остановит запрос на переписывание foo.css как profile.php?user=foo.css.

person Paul Dixon    schedule 21.07.2009

Ваше правило перепишет любой запрос, даже запрос вашего файла css.

Вам также понадобится RewriteCond следующим образом:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) profile.php?user=$1 [QSA,L]

Это будет перенаправлено только в том случае, если нет файла, соответствующего запросу.

person innaM    schedule 21.07.2009

Помните, что запрос на файл CSS тоже является запросом, и ваше правило переписывает запрос для whatever.css на profile.php?user=whatever.css.

person Draemon    schedule 21.07.2009