2010-12-31 2 views
-1

Я пытаюсь переписать этот адрес:mod rewrite проблема?

http://www.example.com/user.php?user=username 

в

http://example.com/username 

Я использую этот код в моем .htaccess:

RewriteEngine On 
RewriteRule ^([^/]*)$ /user.php?user=$1 [L] 

но его давая мне внутренний ошибка. Здесь что-то не так?

+0

что делает ошибка журнала! спасибо – mario

+0

Если они набирают exaxmple.com/username/ с завершающей косой чертой, вы хотите, чтобы она потерпела неудачу? Это может привести к проблемам пользователей. Или дополнительный косой черт? Плюс: ожидаются ли ваши имена пользователей определенной длины? И какие символы будут разрешены? – Cups

+0

да, я хочу, чтобы он потерпел неудачу, им разрешены любые персонажи !! – getaway

ответ

2

Чтобы соответствовать строки запроса часть URL, вы должны использовать RewriteCond, как это:

RewriteEngine On 
RewriteCond %{QUERY_STRING} user=(.*) 
RewriteRule ^user.php$ %1 [L] 

Так правило RewriteCond соответствует имени пользователя в пользователя = имя, а затем% 1 использует это значение? в результате переписывания на последней строке моего примера.

В случае сбоя URL-адреса типа/name автоматически перенаправляются на URL-адреса типа/name /, если веб-сервер находит, что/name является каталогом. Поэтому, если вы намереваетесь сопоставить user.php/user = name с чем-то вроде /name/index.html, вы заставите эту косую черту встать. Но если ваше намерение состоит в том, чтобы сопоставить его с файлом (или скриптом CGI) в/name, то он будет работать так, как ожидалось.

+0

Хм. После повторного чтения вопроса, вы уверены, что пытаетесь сопоставить user.php? User = имя пользователя в/username? Ваш текст говорит об этом, но ваш .htaccess идет в другом направлении, например, вы пытаетесь взять URL/имя пользователя и сопоставить его с user.php? User = username. Извините, если я ответил на вопрос, который вы не спрашивали :-) – andy

+0

, что deosnt wpork sorry !!! – getaway