Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Каталоги как домены третьего уровня

Сообщения:  [1-10]   [11-20] 

 
 автор: Follower   (23.06.2012 в 12:22)   письмо автору
 
   для: Sfinks   (19.06.2012 в 08:34)
 

Пробовал PT поставить, что-то не работает.
RewriteRule ^каталог/ - [L]
RewriteCond %{HTTP_HOST} ^каталог\.сайт\.su$
RewriteCond %{DOCUMENT_ROOT}/каталог%{REQUEST_URI} -d
RewriteRule [^/]$ %{REQUEST_URI}/ [PT,L]
RewriteCond %{HTTP_HOST} ^каталог\.сайт\.su$
RewriteRule (.*) каталог/$1 [PT,L,QSA]

Вообще даже сайт/каталог перестал открываться.

Нельзя где-нибудь в логах там посмотреть всю цепочку переадресаций?

И вообще, можно тупо насильно заменить каталог.сайт/товар на сайт/каталог/товар и перейти по этой ссылке?

  Ответить  
 
 автор: Follower   (21.06.2012 в 20:01)   письмо автору
 
   для: Sfinks   (19.06.2012 в 08:34)
 

Сделал, как у хостера написано, учел кодировки. Перенаправляет как надо, но прямо в настоящую подпапку - роутер не успевает перехватывать. Что, придется кидать запросы прямо на него или класть в папки свой php-скрипт? У htaccess получается самый высокий приоритет. Ну да, ведь на роутер приходят уродливые внутренние ссылки, это мне снаружи кажется, что там типа папки.

UPD: А вот флаги в конце rewriterule, там нельзя как-нибудь поставить, чтобы он не физическую папку открывал, а просто переходил по адресу?

  Ответить  
 
 автор: Sfinks   (19.06.2012 в 08:34)   письмо автору
 
   для: Follower   (16.06.2012 в 10:56)
 

> И еще, у меня домен кириллический, мне в условие правила писать в utf8 или punycode?
Это сложнее....

Имена доменов в
RewriteCond %{HTTP_HOST} ^каталог\.сайт\.su$
нужно писать в punycode, т.к. на сервер приходит именно такое закодированное название.

А вот имена каталогов и путей в
RewriteRule (.*) каталог/$1 [L,QSA]
нужно писать в 16тиричных кодах по таблице ASCII.

Я обычно перевожу так (допустим слово каталог):
вбиваю в адресной строке браузера https://www.google.ru/?q=каталог
адрес переводится в такой: https://www.google.ru/?q=%EA%E0%F2%E0%EB%EE%E3
беру из этого %EA%E0%F2%E0%EB%EE%E3 и заменяю % на \x
получаем:
RewriteRule (.*) \xEA\xE0\xF2\xE0\xEB\xEE\xE3/$1 [L,QSA]

  Ответить  
 
 автор: Follower   (16.06.2012 в 10:56)   письмо автору
 
   для: Sfinks   (10.06.2012 в 21:34)
 

У меня сейчас ссылки вида сайт/index.php/каталог/товар-detail
Detail надо будет убрать, там будут каталоги второго уровня вложенности.
Он ведь будет скрыто переадресовывать каталог.сайт/подкаталог/товар на сайт/index.php/каталог/подкаталог/товар?

Разобрался вроде с псевдонимами, теперь пишет не "сервер не найден", а "страница не найдена".
Нельзя ли не передавать запрос на роутер, а сразу пользоваться результатом его работы? То есть правило типа
RewriteCond %{HTTP_HOST} ^subdomain1\.site\.ru$ [NC] 
RewriteRule ^(.*)$ index.php/subdomain1 [L,QSA]

И еще, у меня домен кириллический, мне в условие правила писать в utf8 или punycode?

UPD: Вот, сделал ссылки без index.php. Они сейчас выглядят как сайт/каталог/ и сайт/каталог/страница.html И нашел у хостера галочку "Создать поддомен в свою папку", которая переадресует запросы к поддоменам на основной сайт. Там же есть генератор содержимого htaccess для переадресации в папки. Он такое пишет:
RewriteRule ^каталог/ - [L]
RewriteCond %{HTTP_HOST} ^каталог\.сайт\.su$
RewriteCond %{DOCUMENT_ROOT}/каталог%{REQUEST_URI} -d
RewriteRule [^/]$ %{REQUEST_URI}/ [R,L]
RewriteCond %{HTTP_HOST} ^каталог\.сайт\.su$
RewriteRule (.*) каталог/$1 [L,QSA]


И он мне выдает "The requested URL / was not found on this server."

  Ответить  
 
 автор: Follower   (10.06.2012 в 23:51)   письмо автору
 
   для: Sfinks   (10.06.2012 в 21:34)
 

Выглядит прямо как то, что мне надо. Создал пробную запись в днс, завтра попробую.

  Ответить  
 
 автор: Sfinks   (10.06.2012 в 21:34)   письмо автору
 
   для: Follower   (10.06.2012 в 15:12)
 

> Я могу попинать этот роутер, ссылки будут вообще без index.php, будут выглядеть прям как папки.

Т.е. вы умеете с ним обращаться? С router.php. Да? Я правильно понимаю? А то мне с его структурой ну совсем не хочется разбираться.

Тогда так. Предположим нам нужно перенаправить subdomain1.site.ru и subdomain2.site.ru на router.php, который должен разрулить дальнейшее поведение сайта.

Саписи CNAME, которые указывают на основной домен нужно создать заранее, т.к. чтобы они заработали, нужно дождаться когда обновятся DNS-сервера. А это обычно занимает от 4 до 24 часов. Тут уж ниче не поделаешь.

В htaccess в корне сайта пропишите такое:
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^subdomain1\.site\.ru$ [NC]
RewriteRule ^(.*)$ router.php?catalog=subdomain1&request_uri=$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^subdomain2\.site\.ru$ [NC]
RewriteRule ^(.*)$ router.php?catalog=subdomain2&request_uri=$1 [L,QSA]

В результате при обращении по адресу, например:

http://subdomain1.site.ru/mashiny/audi/?model=A4

Произойдет скрытая от пользователя переадресация на

http://site.ru/router.php?catalog=subdomain1&request_uri=mashiny%2Faudi%2F&model=A4

Дальше вам разбираться с этим "роутером".

  Ответить  
 
 автор: Follower   (10.06.2012 в 15:12)   письмо автору
 
   для: Sfinks   (10.06.2012 в 14:20)
 

У меня вообще нет сейчас .htaccess, я его удалил, так как он выдавал ошибки после моих экспериментов. Тем не менее, в адресной строке у меня не сайт/index.php?=ekjrhge349g9e8y а сайт/index.php/категория/товар. Я не знаю,может это и не виртуемарт делает, но кто тогда?

Вот из какой-то статьи из результатов гугла:
"Еще очевидным преимуществом является то, что, благодаря router.php абсолютно все ссылки в практически любом компоненте/модуле, отображающем товары для Virtuemart, даже сторонних разработчиков, превращаются в SEO ЧПУ ссылки (там, где используется ст. функция JRoute::_())"

А на гугле меня не забанили, но мануалов конкретно вот про домены третьего уровня применительно к htaccess я не нашел.

Я могу попинать этот роутер, ссылки будут вообще без index.php, будут выглядеть прям как папки. Но уж с поддоменами помогите мне, пожалуйста.

  Ответить  
 
 автор: Sfinks   (10.06.2012 в 14:20)   письмо автору
 
   для: Follower   (10.06.2012 в 10:20)
 

> Не хотите объяснять мне сами - дайте ссылку на толковый мануал
Вообще, после таких предъяв, конечно, желание пропадает....

> лежит файл router.php, который и создает видимость папок
Еще раз говорю, видимость папок создает модуль апача mod_rewrite. В результате его работы в файл router.php попадает путь, который был введен пользователем в адресной строке браузера, в виде элемента массива $_GET.

> ЧТО мне надо написать в htaccess в корне сайта?
Покажите что у вас сейчас есть в хтакцесе? Интересуют строки, начинающиеся с RewriteRule и RewriteCond.

> дайте ссылку на толковый мануал, где все это есть
А вас что, забанили на гугле?

> компонент каталога/емагазина для джумлы
Значит быстрее всего вам помогли бы на форуме Джумлы!
Но раз уж хотите здесь (если еще хотите, конечно), то будем разбираться. Ибо Я НЕ ПОЛЬЗОВАЛСЯ ни джумлой ни, тем более, маркетом этим.

  Ответить  
 
 автор: Follower   (10.06.2012 в 10:20)   письмо автору
33.5 Кб
 
   для: Sfinks   (07.06.2012 в 23:15)
 

Для общего развития. Virtuemart - компонент каталога/емагазина для джумлы. Так вот там в папке лежит файл router.php, который и создает видимость папок, как я понимаю.
Вот мы, наконец, и дошли до сути вопроса.
ЧТО мне надо написать в htaccess в корне сайта? Не хотите объяснять мне сами - дайте ссылку на толковый мануал, где все это есть. Но конечно, лучше будет, если вы прямо здесь мне приведете пример.

  Ответить  
 
 автор: Sfinks   (07.06.2012 в 23:15)   письмо автору
 
   для: Follower   (07.06.2012 в 23:01)
 

> мне нужны каталоги virtuemart, коих вообще не существует - он их видимость сам своим роутером создает.
Я не знаю, что такое virtuemart, но врядли он там чет роутером делает =) Каталоги которых нет - это ЧПУ. Организуются они в .htaccess. Посмотрите в своем .htaccess строки
RewriteEngine On
RewriteRule что-то там еще
есть? Это и есть то, что создает ЧПУ.

Значит, чтобы вам организовать поддомены, которые ссылаются на каталоги, которых нет, вам нужно (как вы верно нашли в своей панели) создать для нужных поддоменов CNAME записи, чтобы обращение к этим поддоменам приводило к попаданию в корень основного домена. А в .htaccess основного домена уже прописать правила, которые будут отслеживать с какого поддомена обращение и (незаметно для пользователя) редиректить на скрипты, отвечающие за эти поддомены. Получится тот эффект который вам нужен.

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования