Да, тогда вам будет достаточно проблематично писать свой роутер для такой задачи. А как для новичка, могу посоветовать сервис для генерирования htaccess правил. Хотя, без базовых знаний, вас и там будут ждать "подводные камни", но пробуйте.
Примерно понимаю htaccess, раньше пробовал изучать...
Генератор тоже выдает http://www.domain.com/firms/country/123.html
Если отключить значение area=country, то выходит так:
RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?do=$1&area=country&areaid=$2 [L]
А как должны быть сформированы ссылки с get параметрами, чтобы получить в итоге нужные ЧПУ? Может от сюда начать?
Просто не доходит, как должен сервер понять, куда ему перенаправить, по какому адресу из этих:
/index.php?do=firms&area=country&areaid=123
/index.php?do=firms&area=region&areaid=543
/index.php?do=firms&area=city&areaid=878
при запросе /firms/moskva/. Ведь в этой строке кроме названия нет параметра, город это или страна...
это еще нужно переварить
но все же...
даже если я сделаю массив. В нем будет, например, russia. Как скрипт будет выводить россию? Как поймет, что area=country, что россия это не город? Страны, города, регионы в разных таблицах. Именно для этого и используется в GET area=country, типа, выводить информацию по выбранной стране, и чтобы искать в таблице регионов те, у которых страна = Россия.
дело еще в том, что:
1. CMS - DLE. Делаю для своего модуля. А ядро править не хотел бы..
2. далее, планирую делать субдомены (виртуальные), под города.
Нужно сделать так:
/firms/russia/
/firms/moskovskaya-oblast/
/firms/moskva/
Я так понимаю, что так не сделать с такими ссылками, потому что areaid зависит от area.
И сервер не поймет как обрабатывать запрос /firms/russia/ - то ли это страна, то ли город...
Правильно думаю?
Можно конечно сделать так ЧПУ:
/firms/country/russia/
/firms/region/moskovskaya-oblast /
/firms/city/moskva/
И сервер выдает ошибку. Если использовать одно из двух условий, то они срабатывают. Параметр [and] ведь вроде так указывается. А не хочет срабатывать. Может чего не так делаю?
но это не то вроде как.
Мне не нужно править php, да и не могу я его исправить, т.к. он под zend. Мне лишь нужно избавить статьи в разных городах от поисковиков, чтобы не было дублей.
Поэтому нужно сделать 301 редирект. А т.к. php закодирован, значит можно только прописывать в htaccess - работать с тем, что есть.
все преобразования урл из динамики в статику сделаны (ЧПУ). Нужно только добавить исключения для разделов статей на всех субдоменах. (Добавление)
кэш то у htaccess есть какой-то? Его как-то можно обновлять? А не то один субдомен редиректиться до сих пор, хотя в htaccess давно все правила удалил
это куда, вместо моих строк? А как же раздел статей?
esterio пишет:
Зачем 302 ответ. Если будет поисковый бот, то ему не нужно знать что у вас там куда перенаправляеться
Как раз это для поискового бота. Чтобы убрать дубли со всех городов и сделать их только для основного.
Вообще-то я делаю 301 редирект. Но т.к. у меня непонятный кэш какой-то, то я попробовал 302 редирект (временный).
Сейчас некоторые урл не изменяются даже при смене htaccess. Его меняю, а урл как были старые, так и остаются и не меняются никак. Скинуть чего - не знаю.
1. все запросы обрбляет один файл index.php
2. пропускаются файлы которые существуют и директории
3. все сабдомены должны иметь в качестве documentroot тодну папку
я с полу слова не могу понять... я php знаю, не профи, но знаю. А htaccess не знаю. Только вот сейчас стал изучать, т.к. столкнулся с необходимостью.
Субдомены - виртуальные.
Я сделал так:
и все субдомены стали переадресовываться. Но мне нужно только субдомены по указанному пути, точнее разделы статей на всех субдоменах, а другие разделы на них так как и есть.
Ето называетьсяфронт контролером
Вот здесь я уже писал как такое делать
http://forum.php.su/topic.php?forum=71&topic=8633&postid=1358032705#1358032705
спасибо конечно, но я ничего не понял из приведенного примера.
Что нужно сделать, чтобы кэш этот обновлять при необходимости или на время экспериментов?
А еще лучше, помогите, пожалуйста, сформировать нужные ЧПУ.
Как и писал выше, нужно при запросе каталога статей отрезать субдомены (это разные города) и направлять в каталог статей на основном домене.
Есть правила для создания ЧПУ из динамических урл. Поэтому новые правила нужно писать вверху кода и с окончательным параметром (указать L, вроде). А также не знаю, какие правила писать, то ли уже готовые ЧПУ урл перенаправлять, то ли динамические с параметрами $1, $2 и т.д. (в 1-м посте пример правил указал)
Сделал:
Но ничего не работает. Получилось только сделать для ссылки раздела. А если обращаться к категории статей или просмотру статьи, то правило не работает. Пробовал и условия убирать, менять, ничего не получается.
Есть файл с правилами, типа:
RewriteRule ^(.*)/list/([0-9]+)/([0-9]+)?([/])?$ $1/list.php?catid=$2&page=$3
Хочу перенаправить со всех субдоменов, при условии, что путь с субдоменом: subdomen.site.ru/articles/
А направить на без субдомена (отрезать его).
Но сейчас проблема в другом - что бы не исправлял в htaccess, ничего не происходит. Как будто какой-то кэш используется. Писал правила с 301 редиректом. Может он что-то сделал?
Как заставить использовать измененных htaccess?