Задать вопрос
Ashlst
@Ashlst
Фанат эстетики и красивых решений.

Как сделать ЧПУ на php?

Добрый день.
Возникла необходимость прикрутить чпу к самописному сайту,пытался сделать через .htaccess,но слетают стили и не выводит контент.

.htaccess
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ index.php?id=$1


массив со ссылками
$menu = array(
		array('link'=>'На главную','href'=>'index.php'),
		array('link'=>'Каталог','href'=>'#'),
		array('link'=>'О нас','href'=>'about'),
		array('link'=>'Услуги','href'=>'service'),
		array('link'=>'Контакты','href'=>'contact')
			);


как выводится контент:
$id = clear_data($_GET['id']);
switch($id){
		case "about":
			include 'inc/page/about.inc.php';
			break;
		case "service":
			include 'inc/page/service.inc.php';
			break;
		default: include 'inc/page/index_content.inc.php';
}


Помогите,пожалуйста,найти ошибку.
Спасибо,за уделенное время.
  • Вопрос задан
  • 6070 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
слетают стили

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

И всегда используй только абсолютные пути ко всем ресурсам.

не выводит контент.

Отлаживай
Ответ написан
Romanche
@Romanche
Жизнь–игра. Задумано плохо, но графика потрясная!
Попробуй так в .htaccess
RewriteEngine On

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

	RewriteRule (.*) index.php?id=$1 [L]


где
RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d


проверяет существующие файлы и каталоги. Стили у тебя не отображаются без этой проверки. Запрос на css перекидывается на index.php, точнее все запросы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
В меню пункт О нас имеет урл /about
А в коде на сервере в case ожидаете параметр about_us

Тут явно что-то не стыкуется
Ответ написан
Почему бы не использовать готовый роутер, который Вам все это разрулит, например altorouter?
Ответ написан
Комментировать
w999d
@w999d
Web-developer
чтобы стили не слетали - для них отдельное правило пишется.
возьмите пример htaccess из любой хорошей cms-ки, чтобы посмотреть как правильно делать.
Ответ написан
Комментировать
65536
@65536
оффтоп. Мужики, кого-нибудь еще switch раздражает как меня?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы