Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2012, 02:49   #1
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию Файл .htaccess RewriteRule

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

.htaccess
PHP код:
RewriteEngine on 
RewriteRule 
^([A-Za-z0-9]+)([/]?)$ index.php?ihpage=$
index.php
PHP код:
    <?php
        
include 'inc/module_02.php';
    
?>
module_02.php
PHP код:
if(!isset($_GET['ihpage'])){
    include 
'pages/index.php';
}else{
    include 
'pages/'.$_GET['ihpage'].'.php';

Т.е. если мы переходим по
Цитата:
site.ru/view
у нас из папки pages будет инклудится view.php. А вот как сделать что бы когда мы переходим на

Цитата:
site.ru/view/1/
"1" передавалось файлу view.php и мы могли до пустим отобразить новость у которой в базе id=1
Abuhamed вне форума Ответить с цитированием
Старый 09.02.2012, 08:47   #2
KPEATuBHO
Форумчанин
 
Аватар для KPEATuBHO
 
Регистрация: 03.09.2010
Сообщений: 197
По умолчанию

Код:
RewriteEngine on 
RewriteRule ^([^/]+)[/](.+)$ index.php?ihpage=$1&param=$2
Это на два параметра делит

Код:
RewriteEngine on 
RewriteRule ^([^/]+)[/]([^/]+)[/](.*)$ index.php?ihpage=$1&param=$2&param2=$3
Это на три, логика понятна. Но в общем то это не совсем верный подход, т.к. вы же не можете предугадать какой глубины будет вложенность. Поэтому обычно весь REQUEST_URI уже в скрипте разбивают на части и в зависимости от получившегося результата выводят то или иное.

P.S. ([A-Za-z0-9]+) - использовать не верно т.к. здесь могут быть и не только буквы и цифры, но еще и знаки. А также если вы попытаетесь вставить в HTML что-то типа <img src="/assets/images/image.jpg" /> этот путь будет опять таки преобразован из /images/image.jpg в index.php?ihpage=assets&param=image s&param2=image.jpg Поэтому тут же до RewriteRule надо указать условия при которых будет происходить преобразование, например:

Код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Последний раз редактировалось KPEATuBHO; 09.02.2012 в 08:55.
KPEATuBHO вне форума Ответить с цитированием
Старый 09.02.2012, 09:03   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

вот! дано нечто похожее искал ...
а не подскажите ли как вот такое сделать ?
при урл /pages/print/1 перенаправлять на /modules/pages/print.php?page=1
ибо если вместо / использовать - или _ то все получается... (pages-print-1) а вот с слешами - как то хитро экранировать надо
ADSoft вне форума Ответить с цитированием
Старый 09.02.2012, 20:39   #4
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

ADSoft

Перенаправлять или инклудить ?
Abuhamed вне форума Ответить с цитированием
Старый 09.02.2012, 20:43   #5
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

KPEATuBHO

Понятия не имею почему но ваш код не работает...
Abuhamed вне форума Ответить с цитированием
Старый 09.02.2012, 21:23   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Цитата:
Сообщение от Abuhamed Посмотреть сообщение
ADSoft

Перенаправлять или инклудить ?
перенаправление .... а чего уж там делать ... разберемся
ADSoft вне форума Ответить с цитированием
Старый 10.02.2012, 02:34   #7
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Тоже самое, отлавливаете 3 параметра - "/pages/print/1" (pages,print,1)
и перенаправляете на /modules/pages/print.php?page=1. А перенаправлять через header("location: http://programmersforum.ru");
Только как отловить 3 параметра а не один...
Abuhamed вне форума Ответить с цитированием
Старый 10.02.2012, 07:58   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

не.... по большому счету мне нужно pages/print жестко в правило вписать ... а вот параметр = 1
ADSoft вне форума Ответить с цитированием
Старый 10.02.2012, 21:39   #9
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

А на мой вопрос кто то ответит????
Abuhamed вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RewriteRule для .htaccess Никки PHP 0 30.01.2012 20:56
Файл .htaccess igmihr Помощь студентам 0 30.08.2011 08:26
файл .htaccess RewriteRule aferistz PHP 0 10.04.2011 11:52
RewriteRule в .htaccess Gorychev HTML и CSS 3 23.09.2010 13:15
Подскажите правильный RewriteRule (.htaccess) Dj_smart PHP 10 11.01.2009 23:43