|
|
|
| Здравствуйте форумчане... помогите разобраться , а то никак не получается. Есть у меня ссылки двох видов:
site*com/index*php?subcat=beauty
site*com/index*php?subcat=healths&article=about-health
|
Переделать их надо в такие:
site*com/beauty/
site*com/healths/about-health/
|
Остановился на таких правилах, но только для 1 типа, а для двух не знаю как:
[code]RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index*php?cat=$1 [L]
Помогите составить правило или нужно два правила, пробовал по-разному ничего не получается(( | |
|
|
|
|
|
|
|
для: NE}|{UBOJ
(17.11.2012 в 15:51)
| | Ваш htaccess:
# Позволяем следовать символическим ссылкам
Options +FollowSymLinks
# Если mod_rewrite есть на сервере
<IfModule mod_rewrite.c>
# Включаем mod_rewrite
RewriteEngine On
# Задаём "базовую" директорию,
# относительно которой идут все запросы
RewriteBase /
# Если запрашиваем реальная папка или файл
# ничего не делаем, иначе "заворачиваем" все запросы
# на index.php, который лежит в RewriteBase
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]
</IfModule>
|
А уже в index.php проводите разбор:
<?php
// Получаем запрос, удаляя пробелы и слеши
// в начале и конце строки
$request = trim($_SERVER["REQUEST_URI"], '/');
// Разбиваем запрос на части
$parts = explode('/', $request);
// Удаляем случайные пустые элементы, которые
// появляются, если, например, в запросе будет
// два слеша подряд (/news//04/01/1986/)
$parts = array_filter($parts, 'trim');
// Смотрим результат
print_r($parts);
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(19.11.2012 в 16:37)
| | Ну это более менее все понятно, а как потом заставить браузер отображать ссылки вида ЧПУ.
Или эта функция:
RewriteRule ^(.*)$ /index.php [L,QSA]
|
будет переделывать ссылки любого вида, и такого:
site.com/index.php?subcat=beauty
|
и такого:
site.com/index.php?subcat=healths&article=about-health
|
Я попробовал, но не работают ссылки такого вида:
site.com/index.php?subcat=healths&article=about-health
|
Я пытаюсь сделать что-то похожее как у вас на сайте, только у меня нет /category/
Вот здесь: beauty-in-health.net можно посмотреть, то что я делаю. | |
|
|
|
|
|
|
|
для: NE}|{UBOJ
(20.11.2012 в 13:33)
| | При таком правиле
RewriteRule ^(.*)$ /index.php [L,QSA]
| все ссылки будут доступны в index.php в массиве $_SERVER и $_GET
Т.е. если в браузере в адресной строке ссылка:
http://site.com/gallery/catalog/100
| то вместо нее будет загружен index.php, а уже в index.php ее можно получить в переменной $_SERVER['REQUEST_URI']. А дальше уже разбирайте ее средствами php и подключайте необходимые модули. | |
|
|
|
|
|
|
|
для: Sfinks
(21.11.2012 в 23:13)
| | Попробовал, не получается, ссылки вида http://site.com/gallery - работают, а ссылки вида http://site.com/gallery/catalog - не работают, стили пропадают, если не тяжело посмотрите на beauty-in-health.net тестирую, может я неверно ссылки в скрипте прописываю??? я так прописываю: gallery/catalog или просто gallery. Что не так??? | |
|
|
|
|
|
|
|
для: NE}|{UBOJ
(22.11.2012 в 01:22)
| | СДЕЛАНО ))))))))))))))))))))
Завтра напишу, может кто-то будет на те сами грабли натыкаться | |
|
|
|
|
|
|
|
для: NE}|{UBOJ
(22.11.2012 в 03:27)
| | Думаю грабли оказались в путях...
При использовании ЧПУ всегда нужно писать или абсолютный путь: "http://site.ru/css/style.css", или относительный от корня сайта: "/css/style.css" | |
|
|
|
|
|
|
|
для: Sfinks
(22.11.2012 в 08:38)
| | Да, грабли были именно в путях , но до этого также были грабли. Так не повторять же моих ошибок никогда если кто прочитает мой пост)) !!!!!! Не имею образования или стажа в этой сфере, поэтому могу неправильно излагать свои мысли, прошу понять. Итак:
1. Mod rewrite не переделывает ссылки (как ошибочно я считал) вида:
site.com/index.php?cat=game или site.com/index.php?cat=game&subcat=football в такие:
site.com/game или site.com/game/football
А надо ручками набирать все ссылки такого вида которого хотите видеть, т.е. в скрипте (где пишете пути к рубрикам или вашим записям) ссылки должны выглядеть так:
ну или так /game
2. htaccess:
# Позволяем следовать символическим ссылкам
Options +FollowSymLinks
# Если mod_rewrite есть на сервере
<IfModule mod_rewrite.c>
# Включаем mod_rewrite
RewriteEngine On
# Задаём "базовую" директорию,
# относительно которой идут все запросы
RewriteBase /
# Если запрашиваем реальная папка или файл
# ничего не делаем, иначе "заворачиваем" все запросы
# на index.php, который лежит в RewriteBase
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]
</IfModule>
|
3. index.php
<?php
// Получаем запрос, удаляя пробелы и слеши
// в начале и конце строки
$request = trim($_SERVER["REQUEST_URI"], '/');
// на всякий случай декодируем
$request = urldecode($request );
// Разбиваем запрос на части
$parts = explode('/', $request);
// Удаляем случайные пустые элементы, которые
// появляются, если, например, в запросе будет
// два слеша подряд (/news//04/01/1986/)
$parts = array_filter($parts, 'trim');
// Смотрим результат
print_r($parts);
?>
|
Достать нужные вам параметрами так:
$foo=$parts[0];
$football=$parts[1];
ДОБАВИЛ К ВЫШЕ СТОЯЩЕМ КОДЕ mihdan СТРОЧКУ $request = urldecode($request );. Увидел когда-то не знаю нужна ли она здесь, но я добавил.
4. При использовании ЧПУ всегда нужно писать или абсолютный путь: href="http://site.ru/css/style.css", или относительный от корня сайта: href="/css/style.css" ВСЕ ССЫЛКИ ДОЛЖНЫ НАЧИНАТЬСЯ - "/"
5.Если хотите ссылки site.com/game/ или site.com/game/football/ - нужно добавить всем ссылкам в конец "/", но наверное кроме путей к стилям, скриптам..., просто не пробовал, может и будет работать, но думаю это не правильно. А также в htaccess строчку:
RewriteRule ^(.*)$ /index.php [L,QSA]
| замените на:
RewriteRule ^(.*)/$ /index.php [L,QSA]
|
ВОТ И ВСЕ ДОЛЖНО РАБОТАТЬ))) | |
|
|
|
|
|
|
|
для: NE}|{UBOJ
(22.11.2012 в 14:05)
| | Посмотрите еще тег base | |
|
|
|