Вот одна из вещей, которые я сделал для моей высокопроизводительной платформы (см. Мою биографию).
Я даю вам расширенный RewriteRule, я почти уверен, что у вас будет достаточно материала, чтобы закончить:
Создание статических доменов:
static.example1.com
static.example2.com
static.example3.com
Где будут находиться все ваши изображения.
Отныне не более:
www.example1.com/images/www.example1.com/picture.jpg
www.example2.com/images/www.example2.com/picture.jpg
www.example3.com/images/www.example3.com/picture.jpg
, но
static.example1.com/picture.jpg
static.example2.com/picture.jpg
static.example3.com/picture.jpg
Хорошие URL, а?Теперь создайте vhost со всеми вашими статическими файлами:
<VirtualHost *>
ServerName static.example1.com
ServerAlias static.example2.com static.example3.com
</VirtualHost>
Установите корневой каталог вашего документа на базу без имени vhost, поэтому в вашем случае:
DocumentRoot "/public_html/images"
И добавьте этот RewriteRule
RewriteCond %{HTTP_HOST} ^static\.([a-zA-Z0-9\-]+)\.com$
# Change the path, and add the request:
RewriteRule (.*) %{DOCUMENT_ROOT}/static.%1.com$1 [QSA,L]
В общем:
<VirtualHost *>
ServerName static.example1.com
ServerAlias static.example2.com static.example3.com
RewriteCond %{HTTP_HOST} ^static\.([a-zA-Z0-9\-]+)\.com$
# Change the path, and add the request:
RewriteRule (.*) %{DOCUMENT_ROOT}/static.%1.com$1 [QSA,L]
</VirtualHost>
Хорошо, это не совсем точно отвечает на ваш вопрос, так что вот краткий ответ, но мне это не нравится, потому что этоне поможет вам выполнить очень (очень) хорошую работу:
RewriteCond %{HTTP_HOST} ^www\.(example1|example2|example3)\.com$
# Change the path:
RewriteRule (.*)(\.(css|js|txt|htc|pdf|jpg|jpeg|gif|png|ico))$ %{DOCUMENT_ROOT}/www.%1.com$1$2 [QSA,L]
А если этого недостаточно:
Два совета:
Если выВы не в размещенной среде (= если это ваш собственный сервер и , вы можете изменять виртуальные хосты , а не только .htaccess
файлов), попробуйте использовать директиву RewriteLog
: она поможет вам отследить такие проблемы:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
Мой любимый инструмент для проверки регулярных выражений:
http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)