Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

ЧПУ и .htaccess

#apache #htaccess #php


Скажу сразу, что я почти в этом не разбираюсь. Необходимо сделать ЧПУ. Урлы типа
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. Так что
просьба громко не смеяться. Буду благодарен за любой ответ.    


Ответы

Ответ 1



RewriteEngine on RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ /index.php?route=$1 [L,QSA] Ну а в скрипте уже разгребайте $_REQUEST['route']

Ответ 2



RewriteRule ^model/([A-Za-z]+)$ model.php?id=$1 [L] Чем не устроит такой редирект? Соответственно для циферок: RewriteRule ^model/([0-9]+)$ model.php?id=$1 [L] Успехов!

Комментариев нет:

Отправить комментарий