Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ещё раз о замене адреса при помощи mod_rewrite!
 
 автор: Panker   (20.09.2006 в 11:41)   письмо автору
 
 

Помогите сделать чпу акова вида!

Из адреса такова - index.php?mod=index&id=panker_123_76f788f8

нужно сделать такой вот panker_123_76f788f8.html

тоисть просто ghtdhfnm из ID в хтмл страницу :)

Заранее спасибо!

   
 
 автор: cheops   (20.09.2006 в 12:14)   письмо автору
 
   для: Panker   (20.09.2006 в 11:41)
 

Попробуйте поместить в файл .htaccess следующие инструкции
RewriteEngine On 
Options +FollowSymlinks 
RewriteBase / 
RewriteRule ^/([a-zA-Z0-9_]+)\.html /index.php?mod=index&id=$1

   
 
 автор: Panker   (20.09.2006 в 14:12)   письмо автору
 
   для: cheops   (20.09.2006 в 12:14)
 

Вот такое чудо раньше было http://kmk/index.php?mod=index&id=panker_123_76f788f8

сейчас зашол по адресу http://kmk/panker_123_76f788f8.html не работает :(

   
 
 автор: cheops   (20.09.2006 в 20:23)   письмо автору
 
   для: Panker   (20.09.2006 в 14:12)
 

Для отладки используйте такой скрипт
RewriteEngine On  
Options +FollowSymlinks  
RewriteBase /  
RewriteRule ^/([a-zA-Z0-9_]+) /index.php?mod=index&id=$1

А в index просто выводите значение параметра $1 - передаётся оно или нет
<?php
  
echo $_GET['id'];
?>

А вместо panker_123_76f788f8.html попробуйте подставить что-то другое, например, panker_123_76f788f8

   
 
 автор: Panker   (21.09.2006 в 11:06)   письмо автору
 
   для: cheops   (20.09.2006 в 20:23)
 

допустим выводит PANKER но если я зхожу по адресу www.adres.ru/panker пишит не т такой странице

   
 
 автор: cheops   (21.09.2006 в 12:58)   письмо автору
 
   для: Panker   (21.09.2006 в 11:06)
 

Ага, лишний / в начале, давайте так
RewriteEngine On   
Options +FollowSymlinks   
RewriteBase /   
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=index&id=$1 [L]

   
 
 автор: Panker   (21.09.2006 в 16:47)   письмо автору
 
   для: cheops   (21.09.2006 в 12:58)
 

ага, сработала, но вот я по тому же принципу хотел сделать страницу новостей но не работает

пишу вот так

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=index&pid=$1 [L]

RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=news&nid=$1 [L]

жирным выделенно то чт оя пытаюсь заменить у новостей

адрес новостей сейчас такой index.php?mod=news&nid=aad7aa600d хотелось бы получить так же aad7aa600d.html

что я не так сделал?

   
 
 автор: cheops   (21.09.2006 в 18:48)   письмо автору
 
   для: Panker   (21.09.2006 в 16:47)
 

А новости выводятся корневым index.php или расположены в подкаталоге корневого каталога?

   
 
 автор: Panker   (22.09.2006 в 11:00)   письмо автору
 
   для: cheops   (21.09.2006 в 18:48)
 

хех немного не допонел вас :)

Но скажу что понел :)

У меня типа так!

index.php


Определяет ГЕТ запрос, и если гет запрос index
то грузится файл modules/index.php
есди в ГЕТ запросе news то грузится modeles/news.php
как бы так,а модули в свою очередь грузят данные!

Так же взависемости от ГЕТ запроса догоже грузится шаблон!

Гет запрос определяющий модуль называется mod
тоисть вот так будет для новостей index.php?mod=news
а так для текста и страниц index.php?mod=index

   
 
 автор: cheops   (22.09.2006 в 11:43)   письмо автору
 
   для: Panker   (22.09.2006 в 11:00)
 

А вот что заметил
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=index&pid=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=news&nid=$1 [L]

Вопервых параметр [L] останавливает работу модуля mod_rewrite, как только найдено соответствие, а соответствие находится сразу для первого правила. Второе правило, у вас идентично первому - нужно сделать их различными, префекс, что-ли какой-то ввести. Модуль mod_rewrite не может определить по URL вида panker_123_76f788f8.html, где у вас статья, а где новости.
Если новости бы у вас начинались всегда с префикса news_, тогда можно было бы использовать следующий набор правил
RewriteEngine On 
Options +FollowSymlinks 
RewriteBase / 
RewriteRule ^new_([a-zA-Z0-9_]+)\.html$ /index.php?mod=news&nid=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=index&pid=$1 [L]

   
 
 автор: Panker   (22.09.2006 в 12:09)   письмо автору
 
   для: cheops   (22.09.2006 в 11:43)
 

Вот сообразил!
смотрите у меня модули так как я на верху писал, типа так

index.php?mod=MODUL или index или news

короче .. мля МНЕ ОЧНЕЬ ТРУДНО ОБЬЯСНИТЬ ((

вот я хотел сделать так RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=$1 [L]
что бы модуль index.php?mod=news заменился на news,html но тогда получается каждый модуль меняется!
а у меня так же меняются обычные страницы на stranica.html и после такой замены у меня скрипт думает что ОБЫЧНАЯ СТРАНИЦА ЭТО МОДУЛЬ и происходит загвозка, у меян типа скрипт думает это модуль и ищет шаблон для него =(
но шаблона нет и получается обычная старница!

ВОТ КОРЧОЕ Я ПОНЕЛ :)
как мне хзаменить КОНКРЕТНЫЙ АДРЕС index.php?mod=news на news.html не трогая адреса типа
ndex.php?mod=modul ndex.php?mod=index что бы конкретно адрес менялся с модулем news ( ndex.php?mod=news ) ??
помогите а то я модулями апутался и чпу как то не доделать до конца )

   
 
 автор: Panker   (22.09.2006 в 12:19)   письмо автору
 
   для: Panker   (22.09.2006 в 12:09)
 

OOOOOOOOOOOoooooooo

вот придумал

RewriteEngine On  
Options +FollowSymlinks  
RewriteBase /  
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=$1 [L] 
RewriteRule ^new_([a-zA-Z0-9_]+)\.html$ /index.php?mod=news&nid=$1 [L] 
RewriteRule ^page_([a-zA-Z0-9_]+)\.html$ /index.php?mod=index&pid=$1 [L]

страницы тоже пусть с префиксом будут!

НО ВОТ ТО ЧТО ЖИРНЫМ не работает
мля я опять напутал :)
плиз помогите вот опять и с вашим примером запутался вроде работает и опят ья гдето руками своими влез :)

   
 
 автор: Panker   (22.09.2006 в 12:28)   письмо автору
 
   для: Panker   (22.09.2006 в 12:19)
 

OOOOOooooooooo

Cheops - плиз прости, туплю очень сильно и тебя напрегаю, всё сделал всё работает и страницы раздельно и модули и новости ))) БОЛЬШОЕ ТЕБЕ СПАСИБО )))
моя КМС преобретает товарный вид ))))

   
 
 автор: cheops   (22.09.2006 в 12:30)   письмо автору
 
   для: Panker   (22.09.2006 в 12:19)
 

Строку
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=$1 [L] 

либо вообще уберите, либо в конец поставьте, так как она самая общая, и под неё все URL подходят
RewriteEngine On   
Options +FollowSymlinks   
RewriteBase /   
RewriteRule ^new_([a-zA-Z0-9_]+)\.html$ /index.php?mod=news&nid=$1 [L]  
RewriteRule ^page_([a-zA-Z0-9_]+)\.html$ /index.php?mod=index&pid=$1 [L]
RewriteRule ^([a-zA-Z0-9_]+)\.html$ /index.php?mod=$1 [L]  

А так у нас если new_ и page_ будут находится первыми, далее проверка правил производиться не будет, так как мы её останавливаем при помощи параметра [L].

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования