2014-09-27 2 views
1

Я пытаюсь переписать следующий URL с помощью .htaccess:Как переписать URL через Htaccess

http://website.com/dealer_home.php?id=dealer1 

В результате я стремлюсь это, где dealer1 это имя пользователя, которое устанавливается в качестве переменной:

http://website.com/dealer1 

Я попытался это правило в .htaccess:

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

Однако я получаю "Внутренняя ошибка сервера" тез мудрец при попытке загрузить любую из страниц веб-сайта.

Можете ли вы дать несколько советов, где я делаю неправильно?

EDIT: Я попытался также RewriteRule ^(.*)$ dealer_home.php?id=$1 [PT], но не успех.

Спасибо!

ответ

0

Возможно, это конфликт с существующими файлами/папками и корневым uri.
Попробуйте этот код вместо

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)$ /dealer_home.php?id=$1 [L] 

Это правило будет соответствовать каждому URL, как domain.com/something если something не существующий файл или папка.
Итак, если у вас есть другие правила, вы должны положить их выше этого.


EDIT: чтобы избежать дублирования контента и перенаправить старый формат в новый формат URL-адрес

RewriteEngine On 

RewriteCond %{THE_REQUEST} \s/dealer_home\.php\?id=([^&\s]+)\s [NC] 
RewriteRule^/%1? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)$ /dealer_home.php?id=$1 [L] 
+0

Я думаю, что вы на правильном пути, так как теперь страницы загружаются нормально. Проблема в том, что URL-адрес не изменяется. – BradG

+0

Это правило теперь позволяет использовать 'http: // website.com/dealer1', но не перенаправляет' http: //website.com/dealer_home.php? Id = dealer1' в новый формат url. Это то, что вы хотите? –

+1

Ах, так глупо, я забыл изменить перенаправление URL. Спасибо, теперь все отлично работает! – BradG

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