|
|
|
|
|
для: 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]
|
| |
|
|
|
|
|
|
|
для: Unkind
(31.03.2007 в 23:39)
| | > Помогло.
А инструкции к mod_rewrite не подкинете для сравнения? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(31.03.2007 в 05:22)
| | Решение пока только одно пришло в голову - принудительно добавлять / к URL-ам.
glsv (Дизайнер), спасибо :) Помогло. | |
|
|
|
|
|
|
|
для: Sobachka
(31.03.2007 в 01:14)
| | Этот вопрос лучше к разрабочикам апаче,и мод реврайта... :)
На KMX всё нормально работает( | |
|
|
|
|
|
|
|
для: 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-ам. Смотреть запрос, существует ли запрошенный файл, если нет, то добавить слеш (если его нет). | |
|
|
|
|
|
|
|
для: 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/ | |
|
|
|
|
|
|
|
для: Unkind
(06.03.2007 в 21:55)
| | Скорее всего из-за этого
RewriteCond %{REQUEST_FILENAME} /(.+)$
|
так как ты некаково файла не запрашиваешь а значит переадресация на
RewriteRule (.+) http://domain.com/subdomains/%{HTTP_HOST}/$1 [P,L]
| не происходит а суб домен у тебя привязан к главному вот он и загружает от главного:) | |
|
|
|
|
|
|
| Допустим, у меня есть сайт с доменом 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/". | |
|
|
|
|