Я работал над этой проблемой в течение трех дней и публиковал сообщения на нескольких форумах без каких-либо потенциальных клиентов.
Проблема:
Когда пользователь вводит SUBDOMAIN.domain.com, я хочу, чтобы он оставался таким же в окне URL.
Настоящее расположение этих файлов - domain.com/apps/SUBDOMAIN.
Я знаю, что это возможно с использованием записи DNS A .domain.com (что я сделал) и правила .htaccess.
Это мое правило .htaccess на данный момент
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^([a-z0-9-]+)($|/) /apps/%2%{REQUEST_URI} [PT,L]
Хорошо, это почти работает.
Ввод subdomain.domain.com читается из domain.com/apps/subdomain
НО что-то идет ужасно неправильно.
Посещение subdomain.domain.com/image.jpg (AKA domain.com/apps/subdomain) работает нормально
Посещение subdomain.domain.com/anyfolder/image.jpg (AKA domain.com/apps/subdomain) возвращает 404
Журнал ошибок Cpanel показывает следующее:
[Thu Nov 18 20:48:50 2010] [error] [client ***.**.***.***] File does not exist: /home/domain/public_html/images, referer: http://subdomain.domain.com/apps/subdomain/
Таким образом, кажется, что он правильно переписывает на основе первого каталога, но все, что ниже, отправляется обратно в корень public_html
Будем очень признательны за любую помощь и советы
Спасибо,
Тим
PS. Мне пришлось удалить правильное форматирование гиперссылок, поскольку я новый пользователь.
Поправьте меня, если я ошибаюсь, но правило перезаписи у вас есть:
RewriteRule !^([a-z0-9-]+)($|/) /apps/%2%{REQUEST_URI} [PT,L]
говорит: переписать, только если ^([a-z0-9-]+)($|/)
делает не соответствие. Когда ваш URL-путь /anyfolder/image.jpg
, указанное выше будет соответствовать (^anyfolder/
), поэтому правило перезаписи будет не быть запущенным, так что вы в основном продолжите subdomain.domain.com/anyfolder/image.jpg
.
Следующий вопрос SO имеет аналогичное требование:
В своем ответе главич дает ответ, который должен работать, также дает эту ссылку:
Попробуйте, все должно работать нормально.
Можете ли вы отредактировать httpd.conf? Намного проще использовать динамические виртуальные хосты. Проверять, выписываться http://httpd.apache.org/docs/2.2/vhosts/mass.html и http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html