У меня уже есть два правила перезаписи, которые сейчас работают корректно, но для идеальной работы необходимо добавить еще немного кода.
У меня есть веб-сайт, размещенный на mydomain.com, и все subdom.mydomain.com переписываются на mydomain.com/subs/subdom. Моя CMS должна обработать запрос, если достигаемый файл не существует, перезапись выполняется следующим образом:
RewriteCond $1 !^subs/
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ subs/%1/index.php?page=$1 [L]
Моя CMS обрабатывает следующую часть синтаксического анализа, как обычно. Проблема в том, что если файл действительно существует, мне нужно ссылаться на него, не проходя через мою CMS, мне удалось сделать это так:
RewriteCond $1 !^subs/
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.com$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ subs/%1/$1 [L]
Пока что это похоже на шарм. Теперь я привередлив, и мне нужно иметь файлы по умолчанию, которые хранятся в подпрограммах / default /. Если файл существует в папке поддоменов, мы должны взять его, но если нет, нам нужно получить файл из поддоменов по умолчанию. И если файл нигде не существует, мы должны использовать страницу 404 из текущего субдомена, если ее нет.
Надеюсь, это достаточно хорошо описано. Спасибо за ваше время!