httpd правило перезаписи с другим каталогом DocumentRoot - PullRequest
3 голосов
/ 29 июня 2010

Есть ли способ создать правило перезаписи для файла, расположенного не по пути DocumentRoot? Скажем, у меня есть домен http://test.ldt/ с DocumentRoot / home / test_ltd / , и я хочу, чтобы, когда файл запрашивался в static. поддомене (http://stats.test.ldt/) it будет искать запрошенный файл по другому пути, скажем / home / static_files /

Мне посоветовали использовать mod_alias. Однако я не уверен, как заставить это работать, когда мне это нужно с поддоменом.

к кристису:

Вы не правы. Например, если это будут мои правила httpd:

ServerName domain.ltd
ServerAlias www.domain.ltd

DocumentRoot /home/domain_ltd

RewriteEngine on

RewriteCond %{HTTP_HOST} static2.domain.ltd
RewriteRule (.*)$ /home/static_files/$1 [L]

DirectoryIndex index.html index.htm index.php

И клиент запросит static2.domain.ltd/foo.txt, файл будет найден в / home / domain_ltd / home / static_files / $ 1

Ответы [ 2 ]

1 голос
/ 29 июня 2010

Для меня было бы наиболее разумно просто определить поддомен как VirtualHost, который имеет DocumentRoot, который указывает на то место, куда вы хотели (хотя, я думаю, технически мы переходим на территорию ServerFault здесь...)

например:

<VirtualHost *:80>
    ServerName static.domain.tld

    DocumentRoot /home/static_files/

    <Directory /home/static_files>
        Options Indexes FollowSymLinks Includes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Но вы можете сделать это с комбинацией mod_alias и mod_rewrite, если хотите.Примерно так должен работать ...

В httpd.conf:

Alias /static /home/static_files

В .htaccess (или предпочтительно в httpd.conf в Directoryраздел для /home/domain_tld):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^static
RewriteRule ^!static - [C]
RewriteRule ^(.*)$ static/$1 [PT]
1 голос
/ 29 июня 2010

Вы можете включить полный путь в оператор RewriteRule. Например:

RewriteEngine on
RewriteRule   ^/~(([a-z])[a-z0-9]+)(.*)  /home/$2/$1/.www$3

(взято из http://httpd.apache.org/docs/2.0/misc/rewriteguide.html)

...