 |
 |
Форум сетевых администраторов » Программирование » PHP » использование категорий в качестве переменных
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник
|
| использование категорий в качестве переменных |
[сооб. #66308]
07-05-2004 18:02 |
|
Участник
Зарегистрирован: Aug 2002
Место проживания: +372 [EST] TALLINN
Публикаций: 23
Статус:  |
пришла в голову мысль создать скрипт, который преобразует название категорий сервера в переменные. может я некорректно выразился, но имею ввиду следующее:
я хочу зайти в раздел «новости» на сайте www.***.com, нажимаю на соответствующую ссылку и адрес у меня соответственно меняеться на www.***.com/news, причем каталога «news» физически на сервере не существует.
я пытался делать такую вещь:
прописывал в .htaccess на ошибку 404 (файл не найден) файл index.php, в которм написал:
PHP:
<?
$req_uri = $_SERVER['REQUEST_URI'];
$dirname = explode("/", $req_uri);
if (!isset($dirname[1]) or $dirname[1] == "") {
include "./main.html"; // в файле main.html находиться то, что будет показываться при заходе на www.***.com
} else {
if ($dirname[1] == "news"){
echo "THIS IS NEWS DIVISION"; // то, что будет отображаться если заходить в раздел «новости»
} else {
include "404.html"; // если страницы не существует
}
}
?>
тоесть я пересматривал содержимое $_SERVER['REQUEST_URI'] и если оно то, что мне нужно — включал соответствующий файл.
но не всё так просто. вроде бы всё логично, но не работает.
может кто нибудь знает как справиться с этой проблемой? если у кого-то есть другой способ, очень хотел бы его увидеть.
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 18:02 |
|
|
Участник+
|
Не надо извращаться с ErrorDocument 404 ... 
Не... |
[сооб. #66310]
07-05-2004 18:17 |
|
Участник+

Зарегистрирован: Apr 2003
Место проживания: 127.0.0.1
Публикаций: 334
Статус:  |
Не надо извращаться с ErrorDocument 404 ... 
Не лучше-ли юзать Rewrite Engine? ... намного эстетичней будет ... и роботы не будут обламываться при индексации страниц ... 
__________________
.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 18:17 |
|
|
Участник
|
GenUS
можно пояснить что есть «Rewrite Engine»... |
[сооб. #66312]
07-05-2004 18:24 |
|
|
-= n0b0dy =-
|
| [quote]и роботы не будут обламываться при индексации... |
[сооб. #66313]
07-05-2004 18:28 |
|
-= n0b0dy =-

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус:  |
quote: и роботы не будут обламываться при индексации страниц ...
а откуда сведенья что они обламываются?
__________________
No pity, no mercy, no regret.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 18:28 |
|
|
Участник
|
нашел, что нужно сделать:
[php]
if ($dirname[1] ==... |
[сооб. #66314]
07-05-2004 18:42 |
|
Участник
Зарегистрирован: Aug 2002
Место проживания: +372 [EST] TALLINN
Публикаций: 23
Статус:  |
нашел, что нужно сделать:
PHP:
if ($dirname[1] == "news"){
header("HTTP/1.0 200 Ok"); // посылаем заголовок, что то что у нас есть, это вообще, собственно и есть нужная страница
echo "THIS IS NEWS DIVISION"; // то, что будет отображаться если заходить в раздел «новости»
}
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 18:42 |
|
|
Участник+
|
Что-то вроде этого:[code]RewriteEngine On
RewriteBase /
RewriteRule... |
[сооб. #66315]
07-05-2004 19:07 |
|
Участник+

Зарегистрирован: Apr 2003
Место проживания: 127.0.0.1
Публикаций: 334
Статус:  |
Что-то вроде этого: code:
после этой обработки имя виртуальной страницы передается скрипту в переменную $data ...
Пример:
Пользователь набирает: http://coolsite.ru/news_page1.htm
Скрипту передается: $data = "news_page1"
Ну и затем эту строку обрабатываешь, разделяешь на составляющие (раздел, страница, пр.) ...
__________________
.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 19:07 |
|
|
Участник
|
GenUS
этот код надо в index.php или в .htaccess прописать?
[size=1][i]MUR2iK... |
[сооб. #66316]
07-05-2004 19:17 |
|
Участник
Зарегистрирован: Aug 2002
Место проживания: +372 [EST] TALLINN
Публикаций: 23
Статус:  |
GenUS
этот код надо в index.php или в .htaccess прописать?
MUR2iK добавил 07-05-2004 в 19:24:51:
GenUS
ага, прописал в .htaccess всё работает чётко. а есть у этого способа минусы? например мой метод наверняка хорошенько грузит сервер
вот к примеру:
при вложености катологов:
www.***.com/news/may
у меня
$dirname[1] = news
$dirname[2] = may
тоесть легко создавать эмитацию вложености. как поступить с Rewrite Engine?
к тому же..
побаловался я на сервере и вот, что он мне написал:
«Error description:
mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary».
тоесть видимо стоит число ограничений, поэтому такой способ не всем подходит..
__________________
**censored**
Сообщение было отредактировано MUR2iK 07-05-2004 в 19:32
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 19:17 |
|
|


Участник+
|
MUR2iK
Смотря как пользоваться ... вот ты... |
[сооб. #66319]
07-05-2004 19:48 |
|
Участник+

Зарегистрирован: Apr 2003
Место проживания: 127.0.0.1
Публикаций: 334
Статус:  |
MUR2iK
Смотря как пользоваться ... вот ты что-то кажется не так сделал, вот у тя RE и стал грузить сервер, хотя у мня этот метод как часы работает ... 
В том примере, который я дал разделитель между категориями переменных должен быть значком "_", слэши он не обрабатывает, хотя можно научить и этомы, подправив RE ... 
__________________
.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 19:48 |
|
|
Участник
|
GenUS
понятно. ну я во избежании глюков... |
[сооб. #66321]
07-05-2004 20:19 |
|
Участник
Зарегистрирован: Aug 2002
Место проживания: +372 [EST] TALLINN
Публикаций: 23
Статус:  |
GenUS
понятно. ну я во избежании глюков и перегрузок тогда буду использовать свой метод. кстати, можно посмотреть сайт, где ты используещь свою систему 
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
07-05-2004 20:19 |
|
|
Участник+
|
MUR2iK
К сожалению он находится только в... |
[сооб. #66324]
07-05-2004 20:33 |
|
|
Power in your mind !
|
| Ну это обыкновенный ЧПУ, вот вам ссылки по... |
[сооб. #66344]
08-05-2004 09:29 |
|
Power in your mind !


Зарегистрирован: Sep 2002
Место проживания: Moscow
Публикаций: 172
Статус:  |
Ну это обыкновенный ЧПУ, вот вам ссылки по теме :
http://spectator.ru/technology/php/user_friendly_urls
__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете ! 
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
08-05-2004 09:29 |
|
|
Участник
|
rio
спасибо за ссылочку, очень позновательно... |
[сооб. #66381]
08-05-2004 23:10 |
|
|
Power in your mind !


Зарегистрирован: Sep 2002
Место проживания: Moscow
Публикаций: 172
Статус:  |
Всегда пожалуйста 
__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете ! 
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
10-05-2004 10:05 |
|
|
Участник
|
MUR2iK
Кажется, ошибка у тебя заключается... |
[сооб. #66493]
11-05-2004 00:10 |
|
Участник

Зарегистрирован: Oct 2003
Место проживания:
Публикаций: 31
Статус:  |
MUR2iK
Кажется, ошибка у тебя заключается в бесконечном редиректе. Т.е. например, test.html подходит под паттерн .*, заменяется на index.php, рерайт делается заново. Далее index.php опять подходит под .*, и все зацикливается. (это можно обойти, прописав рерайт в главном файле конфигурации - тогда рерайт делается один раз).
Кстати, метод обработкой урлов апачем будет быстрее - скомпилированный код на С все же быстрее PHP.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
11-05-2004 00:10 |
|
|
Участник
|
в конце концов стал использовать FilesMatch
столкнулся... |
[сооб. #69233]
24-07-2004 13:19 |
|
Участник
Зарегистрирован: Aug 2002
Место проживания: +372 [EST] TALLINN
Публикаций: 23
Статус:  |
в конце концов стал использовать FilesMatch
столкнулся с такой проблемой:
при отправки из формы на реално существующую папку все переменные сохраняються, если же посылать содержимое формы на виртуальный каталог — всё убиваеться.
.htaccess:
_____________________________
Action throw /blah/index.php
<FilesMatch "^([^.]+)$">
ForceType throw
</FilesMatch>
<FilesMatch index.php>
ForceType application/x-httpd-php
</FilesMatch>
_____________________________
если учесть что папка /news/ не сущесвует реально на сервере www.***.com, то послать содержимое формы на адрес www.***com/news/?login невозможно.
есть ли способ обойти такую неприятность или придёться во всех формах писать абослютный адрес, типа www.***.com/?login независимо от расположения на сайте?
__________________
**censored**
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
24-07-2004 13:19 |
|
|
|
Формат времени GMT. Текущее время 11:26.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.23892689 seconds (97.32% PHP - 2.68% MySQL) with 26 queries.
|
 |