ЧПУ в массы!

Статус
В этой теме нельзя размещать новые ответы.

Slayter

Гуру форума
Регистрация
8 Апр 2006
Сообщения
231
Реакции
55
Ознакомимся с главным
Всё осуществеляется через файлик .htaccess, который Вам стоит положить в корень сайта с написанным Вами содержанием, а как это содержание Вам написать сейчас объясню.
Для начала убедитесь, что у Вашего хостера установлен mod_rewrite.
Далее. Первой строчкой включаем Rewrite Engine:
Код:
RewriteEngine on 
RewriteBase /
Далее мы должны дать понять нашему вэб-серверу по каким правилам он должен выдавать соедржимое. Начнем с самого простого:

Код:
RewriteRule ^script.html$ script.php
Теперь мы можем вызвать script.php, как script.html(символ $ означает конец строки - в нашем случае правила перезаписи, через пробел указан реальный файл). Тут всё просто и думаю комментарии излишни. Но что делать если у нас есть динамично изменяющийся параметр в адресе?

Код:
RewriteRule ^news/([0-9]+).html$ news.php?id=$1
В этом примере параметр id скрипта news.php может принимать лишь числовые значения - о чем нам говорит место "([0-9]+)". Сформированный адрес будет выглядеть как news/1.html вместо news.php?id=1. Тут в принципе всё просто - но у Вас, скорее всего, возник вопрос "а что делать если динамично изменяющийся параметр принимает буквенные значения?" - просто пишем "([a-z]+)" - не стоит радоваться тут мы разрешили писать лишь буквы в нижнем регистре - а есть ещё и верхний, тогда "([A-Za-z])+". Если у Вас используются русскоязычные заголовке напишите ф-ю перевода кирилицы в транслит - ну или вырвите её откуда-нибудь, например из cutenews(Для просмотра ссылки Войди или Зарегистрируйся. Но это ещё не все - параметров то может быть нааамного больше одного - верно?


Код:
RewriteRule ^cat/([0-9]+)/page/([0-9]+).([A-Za-z]+).html$ arhive.php?cid=$1&page=$2&author=$3
Первоначально адрес этого примера выглядел как site.ru/arhive.php?cid=1&page=1&author=Boyancheg а будет доступен просто как site.ru/cat/1/page/2.Boyancheg.html. Думаю тут что-то излишне объяснять, т.к. как записывать правила было описано выше - а это просто наглядный пример.

В итоге у нас получился файл следующего содержания:
Код:
RewriteEngine on 
RewriteBase /

RewriteRule ^script.html$ script.php
RewriteRule ^news/([0-9]+).html$ news.php?id=$1
RewriteRule ^cat/([0-9]+)/page/([0-9]+).([A-Za-z]+).html$ arhive.php?cid=$1&page=$2&author=$3
Если есть вопросы - готов на них ответить icq 3.7.1.6.0.0.
Статья принадлежит мне - оригинал размещен на Для просмотра ссылки Войди или Зарегистрируйся
 
Ну я так делал у себя, но мое решение не всем подойдет.
.htaccess
Код:
Options All -Indexes
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?url=$1
Ну и функция
Код:
// Собираю массив $_GET
if ($settings[rewrite]==1 && $_GET[url])
{
 $arr_url=explode("/",$_GET[url]);
 $url_l=count($arr_url);
 for ($i=0;$i<count($arr_url);$i++)
 {
$my[$i]=$arr_url[$i];
 }
 unset($_GET[url]); 
}
// Переписываю урл если включен ЧПУ
function rewrite_url($url)
{ global $settings;
  if ($settings[rewrite]==1)
  {
  $arr=explode("?",$url);
  $newurl=str_replace("&","/",$arr[1]);
  $newurl=str_replace("=","/",$newurl);
  return $settings[siteurl].$newurl;
  }
	else {
	  		return $settings[siteurl].$url;
		 }
}
Но опять же я делал под свои конкретные нужды и в строке будут видны только значения переменных, а не их имена...
 
еще допиги что ты делал под код саба :)
 
GriZone написал(а):
еще допиги что ты делал под код саба :)
А при чем тут саб?

Добавлено через 1 минуту
Это все собственоручно написано и к сабу никакого отношения не имеет.
PS Я сам заметил что похоже, но только после того как к этому пришел...
 
Кстати ты меня обидел...
 
a_n_d_y написал(а):
Кстати ты меня обидел...
какие мы обидчивые, извните мадам за резкие слова......:D

вот код .htaccess sabdrimera

Options All -Indexes
Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php

почти как у тебя.

Добавлено через 22 секунды
вот я и подумал...
 
Kokos_23, статья авторская, моя.
В ней не описывается ничего сверхъестественного.
В том что новостной скрипт news.php который выводит новости по их id номеру называется у всех одинаково так же нет ничего из ряда вон выходящего!
 
Slayter
я добавил в корень .htaccess:

RewriteEngine on
RewriteBase /
RewriteRule ^index/([0-9]+).html$ index.php?id=$1


Но адрес остался index.php?id=1

mod_rewrite у хостера установлен.
В чем проблема? Я что-то накосячил?
Если не сложно, опиши и как перевести кириллицу в латиницу. Тоже не могу разобраться. Просто знаний пока не хватает. =(
Нужно для движка newsphp 2006
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху