Код HTACCESS не работает для тщеславных URL-адресов

Прямо сейчас отображаются следующие URL-адреса:

www.mysite.com/account.php?username=$username

Я хочу:

www.mysite.com/$username

Я использую следующий код в своем файле htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ /account.php?username=$1 [L,QSA]

Но это не работает: URL-адреса такие же, как и раньше.

Что случилось ?


person Caro_deb    schedule 01.10.2013    source источник


Ответы (1)


Ваше правило делает только это:

Если кто-то запрашивает www.mysite.com/$username, внутренне серверируйте ресурс по адресу /account.php?username=$username.

Это все. Синтаксис RewriteRule <the URI that matches this> <gets internally rewritten to this>

Таким образом, у вас нет ничего, что могло бы повлиять на изменение URL-адреса. Это не то, как mod_rewrite работает. Похоже, вы хотите иметь возможность внешнего перенаправления браузера, чтобы то, что находится в адресной строке, изменилось. Для этого все намного сложнее:

RewriteCond %{THE_REQUEST} \ /account\.php\?username=([^&\ ]+)&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R=301]
person Jon Lin    schedule 01.10.2013
comment
+1 за ясность. Перезапись URL-адреса работает (я вижу это в адресной строке), но теперь вместо отображения учетной записи пользователя я вижу свою пользовательскую страницу ошибки 404. Есть идеи, почему? - person Caro_deb; 02.10.2013
comment
@ChHr есть ли какие-то другие CMS или какие-то другие правила, которые могут мешать? Вам все еще нужно использовать правила, которые у вас есть в вашем вопросе, вместе с перенаправлением выше. - person Jon Lin; 02.10.2013
comment
Пожалуйста, смотрите мой отредактированный вопрос, я включаю свой полный htaccess. Может что-то мешает? - person Caro_deb; 02.10.2013