ЧПУ и .htaccess

Рейтинг: 3Ответов: 2Опубликовано: 16.05.2011

Скажу сразу, что я почти в этом не разбираюсь. Необходимо сделать ЧПУ. Урлы типа http://domein.com/model.php?id=(название латиницей) нужно перевести в урлы типа http://domein.com/model/(название латиницей). В файле .htaccess выглядит так полностью:

php_flag register_globals on
ErrorDocument 404 /error.html

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{HTTP_HOST} ^domein.com

RewriteRule (.*) http://www.domein.com /$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://domein.com / [R=301,L]

RewriteRule ^ model/(.+)$ model.php?id =$1 [R]

И вот если ставить ключ [R] в последней строке, то редирект выполняется, т.е. в поле адреса забиваешь http://domein.com/model/a страница находиться, но при этом урл меняется на прежний http://domein.com/model.php?id=a. И когда из http://domein.com/search.php идет обращение к http://domein.com/model.php?id=a, урл сам не меняется на http://domein.com/model/a, хоть ты тресни.

С ключами отличными от [R]: либо [L], либо [QSA], либо их комбинации или же совсем без ключа; страница http://domein.com/model/a находиться и урл фиксируется, так что пользователь может его видеть. НО как и в случае с [R], урл сам не меняется на http://domein.com/model/a. И самое страшное что не грузятся картинки и невозможно перейти на другие ветки сайта, даже если менять img src="images/img.jpg" на img src=" domein.com/images/img.jpg" в итоге картинка имеет путь http://domein.com/model/domein.com/images/img.jpg, также и все страницы имеют ссылки вида http://domein.com/model/index.php вместо http://domein.com/index.php при обращении из изменённого урла к index.php.

Наверно немного запутанно, но смысл думаю понятен. Задача сделать рабочими ЧПУ, так чтобы новые урлы формировались из уровня выше и при этом сохранялись в поле адреса. И чтобы нормально грузились все картинки и пути были соответственно рабочими.

Повторюсь, я профан в этом деле и делаю только первые шаги в познании PHP. Так что просьба громко не смеяться. Буду благодарен за любой ответ.

Ответы

▲ 4
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?route=$1 [L,QSA]

Ну а в скрипте уже разгребайте $_REQUEST['route']

▲ 3
RewriteRule ^model/([A-Za-z]+)$ model.php?id=$1 [L]

Чем не устроит такой редирект?

Соответственно для циферок:

RewriteRule ^model/([0-9]+)$ model.php?id=$1 [L]

Успехов!