有没有办法让文件的重写规则与DocumentRoot路径不同?假设我有一个带有DocumentRoot / home / test_ltd / 的域http://test.ldt/,我希望在 static。子域(http://stats.test.ldt/)下请求文件时它会从另一条路径中查找请求的文件,例如/ home / static_files /
我被建议使用mod_alias。但是,当我需要使用子域时,我不确定如何使它工作。
到cristis:
你不对。例如,如果这些是我的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中搜索
答案 0 :(得分:1)
您可以在RewriteRule
语句中包含完整路径。例如:
RewriteEngine on
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3
答案 1 :(得分:1)
对我而言,将子域定义为VirtualHost
并且DocumentRoot
指向您想要的位置是最有意义的(虽然我们在此处进入ServerFault区域,我想......)
e.g:
<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}}