[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по .htaccess
darkavenger
Суть вопроса вот в чем. Нужно чтобы при запросах www.mysite.com/ или mysie.com/ автоматически был параметр main. Вид такой - mysite.com/main. Как это сделать? Мне нужно, чтобы контроллер нужный загружался.
exotica
давольно подробно: http://snowgate.info/redirect_htaccess.html

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
exotica
Redirect permanent / http://www.mysite.ru/main


_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
darkavenger
тут еще дела вот в чем. Разбор ЧПУ ссылок идет в отдельном классе. И в htaccess есть только строка RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]. То есть при любых редиректах таких у меня выходит вот что - mysite.com/mainmainmainmainmainmainmainmainmainmainmainmainmainmainmainmainmainmainmainmainmain?route =mainmainmainmainmainmain
AllesKlar
darkavenger
Зачем тебе редирект на main?
Это не правильно.

Ты в роутере разбираешь url.
Ты в нем должен предусмотреть дефолтный контроллер, который вызывается в том числе и при обращении к корню сайта.

Вот и назначай в самом роутере дефолтным контроллером свой класс main

_____________
[продано копирайтерам]
darkavenger
Я тогда не знаю как правильно выставить условие подключения контроллера. Я хотел сделать так - если массив GET не пуст и существует файл контроллера по такому-то пути, подключить этот файл. Иначе на 404. А так у меня будет выходить что нужно подключать дефолтный контроллер либо если у меня массив GET пустой, то есть путь такой mysite.com, либо имеет такую ссылку mysite.com/main. Получается и так работает дефолтный контроллер и так тоже. Хотелось бы к одному виду привести что-ли...
AllesKlar
код роутера покажи

_____________
[продано копирайтерам]
darkavenger

//route
ob_start();
if (!empty($cGET) && file_exists(ROOT_PATH.PATH_CONTROLLERS.$path_controller)) {
include ROOT_PATH.PATH_CONTROLLERS.$path_controller;
}
else
include
ROOT_PATH.PATH_CONTROLLERS.'/main_controller.php';
$content=ob_get_clean();


как-то так. То есть url разбирается, параметры в массиве cGET, приходит переменная $path_controller и, собственно, ищется по этому пути нужный контроллер. Но я думаю, что нужно исключение какое-то сюда впилить, потому что если введешь другой адрес, показывать будет все равно main.
darkavenger

//route
ob_start();
if (file_exists(ROOT_PATH.PATH_CONTROLLERS.$path_controller)) {
include ROOT_PATH.PATH_CONTROLLERS.$path_controller;
}
else {
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('./404.html'));
}
$content=ob_get_clean();


Таким образом я все изменил, предыдущий вариант не работал, потому что были взаимоисключающие условия в другом классе. Появился другой вопрос. Проверяю я условие, когда вводится заведомо неверный адрес. Например mysite.com/whatthepath, естественно роутер проверяет путь, файла там нет, он идет по ветке иначе. Выдает мне страницу с 404. Но в ней пишется ошибка, что хедер уже был отправлен ранее и не возможно модифицировать информацию. Вопрос - вообще зачем хедер отправлять? То есть я в уроках видел на irbis что они так делают, но работает вполне и без этого
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.