У меня есть то, что я изначально считал простой проблемой. Я использую общий хостинг для своего веб-сайта (поэтому у меня нет доступа к конфигурации Apache), и мне была предоставлена только одна папка для хранения всего моего содержимого. Это все хорошо, но это означает, что все мои поддомены должны у них есть виртуальный корень документа внутри public_html
, что означает, что они фактически становятся папкой на моем основном домене.
Я бы хотел организовать public_html
примерно так:
public_html/
www/
index.php
...
sub1/
index.php
...
some_library/
...
Таким образом, весь мой веб-контент все еще находится в public_html
, но только небольшая его часть будет предоставлена клиенту. Я могу легко добиться этого для всех поддоменов, но это основной домен, с которым у меня возникают проблемы.
Я создал .htaccess
файл в public_html
со следующим:
Options +SymLinksIfOwnerMatch # I'm not allowed to use FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/www [NC]
RewriteRule ^(.*)$ /www/$1 [L]
Это работает довольно хорошо, но по какой-то странной причине www.example.com/stuff
переводится в запрос для www.example.com/www/stuff
и, следовательно, выдается ошибка 404. Насколько я понимаю, если не был указан флаг 'R', mod_rewrite был чисто внутренним, поэтому я не могу понять, почему запрос генерируется, поскольку это подразумевает (по крайней мере для меня) перенаправление.
Я предполагал, что это будет тривиальная проблема, которую нужно решить, так как все, что я на самом деле хочу сделать, - это пересылать все запросы на получение корня www.example.com
в подкаталог, но я потратил часы на поиск ответов, и ни один из них не совсем корректен. Мне трудно поверить, что я единственный, у кого есть эта проблема.
Я прошу прощения, если здесь уже был дан ответ на этот вопрос, я занимался поиском и тралом, но не смог найти подходящий ответ. Пожалуйста, кто-нибудь может пролить свет на это?