![]() |
Показаны 15 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- использование категорий в качестве переменных (http://netadmin.ws/forum/showthread.php?threadid=8677)
использование категорий в качестве переменных
пришла в голову мысль создать скрипт, который преобразует название категорий сервера в переменные. может я некорректно выразился, но имею ввиду следующее:
я хочу зайти в раздел «новости» на сайте www.***.com, нажимаю на соответствующую ссылку и адрес у меня соответственно меняеться на www.***.com/news, причем каталога «news» физически на сервере не существует.
я пытался делать такую вещь:
прописывал в .htaccess на ошибку 404 (файл не найден) файл index.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"; // если страницы не существует
}
}
?>
__________________
New Evolution
Не надо извращаться с ErrorDocument 404 ... 
Не лучше-ли юзать Rewrite Engine? ... намного эстетичней будет ... и роботы не будут обламываться при индексации страниц ... 
__________________
.
GenUS
можно пояснить что есть «Rewrite Engine» и с чем его едять?
__________________
New Evolution
quote:
и роботы не будут обламываться при индексации страниц ...
__________________
No pity, no mercy, no regret.
нашел, что нужно сделать:
if ($dirname[1] == "news"){
header("HTTP/1.0 200 Ok"); // посылаем заголовок, что то что у нас есть, это вообще, собственно и есть нужная страница
echo "THIS IS NEWS DIVISION"; // то, что будет отображаться если заходить в раздел «новости»
}
__________________
New Evolution
Что-то вроде этого:
RewriteEngine On
RewriteBase /
RewriteRule ^([a-zA-Z0-9_]*).htm$ /index.php?data=$1
__________________
.
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».
тоесть видимо стоит число ограничений, поэтому такой способ не всем подходит..
__________________
New Evolution
MUR2iK
Смотря как пользоваться ... вот ты что-то кажется не так сделал, вот у тя RE и стал грузить сервер, хотя у мня этот метод как часы работает ... 
В том примере, который я дал разделитель между категориями переменных должен быть значком "_", слэши он не обрабатывает, хотя можно научить и этомы, подправив RE ... 
__________________
.
GenUS
понятно. ну я во избежании глюков и перегрузок тогда буду использовать свой метод. кстати, можно посмотреть сайт, где ты используещь свою систему 
__________________
New Evolution
MUR2iK
К сожалению он находится только в домашней сетке ...
__________________
.
Ну это обыкновенный ЧПУ, вот вам ссылки по теме :
http://spectator.ru/technology/php/user_friendly_urls
__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете ! 
rio
спасибо за ссылочку, очень позновательно было почитать!
__________________
New Evolution
Всегда пожалуйста 
__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете ! 
MUR2iK
Кажется, ошибка у тебя заключается в бесконечном редиректе. Т.е. например, test.html подходит под паттерн .*, заменяется на index.php, рерайт делается заново. Далее index.php опять подходит под .*, и все зацикливается. (это можно обойти, прописав рерайт в главном файле конфигурации - тогда рерайт делается один раз).
Кстати, метод обработкой урлов апачем будет быстрее - скомпилированный код на С все же быстрее PHP.
в конце концов стал использовать 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 независимо от расположения на сайте?
__________________
New Evolution
| Формат времени GMT. Текущее время 11:39. | Показаны 15 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.