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

Форум Apache

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

 

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

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

тема: mod_rewrite, subdomains

Сообщения:  [1-9] 

 
 автор: Unkind   (01.04.2007 в 13:50)   письмо автору
 
   для: glsv (Дизайнер)   (01.04.2007 в 06:12)
 


Options +FollowSymlinks

RewriteEngine on

RewriteBase /

RewriteCond        %{HTTP_HOST}    ^([a-z]+)\.domain\.com
RewriteCond        %{REQUEST_URI}    !/$
RewriteRule        ^(.*)$    http://%{HTTP_HOST}/%{REQUEST_URI}/ [P,L]

   
 
 автор: glsv (Дизайнер)   (01.04.2007 в 06:12)   письмо автору
 
   для: Unkind   (31.03.2007 в 23:39)
 

> Помогло.
А инструкции к mod_rewrite не подкинете для сравнения?

   
 
 автор: Unkind   (31.03.2007 в 23:39)   письмо автору
 
   для: glsv (Дизайнер)   (31.03.2007 в 05:22)
 

Решение пока только одно пришло в голову - принудительно добавлять / к URL-ам.

glsv (Дизайнер), спасибо :) Помогло.

   
 
 автор: Unkind   (31.03.2007 в 23:31)   письмо автору
 
   для: Sobachka   (31.03.2007 в 01:14)
 

Этот вопрос лучше к разрабочикам апаче,и мод реврайта... :)
На KMX всё нормально работает(

   
 
 автор: glsv (Дизайнер)   (31.03.2007 в 05:22)   письмо автору
 
   для: Unkind   (11.03.2007 в 11:09)
 

> 2) Почему появляется такая неприятная вещь: если запрашиваю папку на поддомене без слеша на конце, то идет переадресация на http://sub.domain.com/subdomains/sub/dir/

Исследовали этот процесс...
Здесь тонкие ньюансы, связанные, видимо, с различием алгоритмов обработки обращений к файлам и директориям.

Если в конце есть /, то Apache после всех преобразований URL-а http://sub.domain.ru/dir/ обнаруживает индексный файл в директории и применяет аналогичные mod_rewrite преобразования к нему. В результате все правильно.

Если в конце слеша нет, то обработка идет совершенно аналогичным образом, за исключением того, что индексный файл не обнаруживается и обработка прекращается. Видимо, в этом случае, Apache считает dir файлом - потому не ищет индексный файл.

Такое впечатление, что один модуль не дает полноценно отработать другому и обработка останавливается в шаге от результата. Решение пока только одно пришло в голову - принудительно добавлять / к URL-ам. Смотреть запрос, существует ли запрошенный файл, если нет, то добавить слеш (если его нет).

   
 
 автор: Sobachka   (31.03.2007 в 01:14)   письмо автору
 
   для: Unkind   (11.03.2007 в 11:09)
 

Этот вопрос лучше к разрабочикам апаче,и мод реврайта... :)

   
 
 автор: Unkind   (11.03.2007 в 11:09)   письмо автору
 
   для: Poison   (08.03.2007 в 18:06)
 

Да это вообще бесполезная строка. Она не делает хуже или лучше.

Вообще вот так упростил:

Options +FollowSymlinks

RewriteEngine on

RewriteBase /

RewriteCond        %{HTTP_HOST}    ^([a-z]+)\.domain\.com
RewriteCond        %{REQUEST_URI}    !/subdomains/
RewriteRule        ^(.*)$    %{DOCUMENT_ROOT}/subdomains/%1/$1?%{QUERY_STRING} [L]


Я просто не понимаю две вещи:
1) Ну почему, если файл не найден, то идет поиск файла на сайте http://domain.com/
Ведь должно же выдать 404. Ерунда какая-то :(
2) Почему появляется такая неприятная вещь: если запрашиваю папку на поддомене без слеша на конце, то идет переадресация на http://sub.domain.com/subdomains/sub/dir/, а не http://sub.domain.com/dir/

   
 
 автор: Poison   (08.03.2007 в 18:06)   письмо автору
 
   для: Unkind   (06.03.2007 в 21:55)
 

Скорее всего из-за этого

RewriteCond        %{REQUEST_FILENAME}    /(.+)$

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

RewriteRule        (.+)                http://domain.com/subdomains/%{HTTP_HOST}/$1 [P,L]
не происходит а суб домен у тебя привязан к главному вот он и загружает от главного:)

   
 
 автор: Unkind   (06.03.2007 в 21:55)   письмо автору
 
 

Допустим, у меня есть сайт с доменом domain.com. Есть папка по адресу http://domain.com/subdomains/ в которой находяться подпапки
с поддоменами, например test.domain.com

Я написал в .htaccess:


Options +FollowSymlinks

RewriteEngine on

#Спец. поддомены
RewriteCond        %{HTTP_HOST}        ^([a-z]+).domain\.ru
RewriteCond        /var/www/domain/data/www/domain.com/subdomains/%{HTTP_HOST} -d
RewriteCond        %{REQUEST_FILENAME}    /(.+)$
RewriteRule        (.+)                http://domain.com/subdomains/%{HTTP_HOST}/$1 [P,L]

#Несуществующие сайты
RewriteCond        %{HTTP_HOST}        ^([a-z]+).domain\.ru
RewriteCond        /var/www/domain/data/www/domain.com/subdomains/%{HTTP_HOST} !-d
RewriteRule        (.+)                http://domain.com/handler/?status=404\&site=%{HTTP_HOST} [P,L]


Создал подпапку "test.domain.com", поместил туда файл "file.txt"

Получилось следующее:
http://notexists.domain.com/ выдает "такого сайта не существует" - OK
http://test.domain.com/ тоже самое, что http://domain.com/subdomains/test.domain.com/ - OK
http://test.domain.com/file.txt тоже самое, что http://domain.com/subdomains/test.domain.com/file.txt - OK
http://test.domain.com/not_exists выдает 404 - OK

Но:
http://test.domain.com/directory/ не выдает 404, а выдает содержимое http://domain.com/directory/

Вопрос: почему Apache ищет файлы в "/var/www/domain/data/www/domain.com/"? Я, кажется, разрешил искать только в "/var/www/domain/data/www/domain.com/subdomains/".

   

Сообщения:  [1-9] 

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

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