我为杂志创建了一个 django 网站,它位于 mag.org/django-site。旧网站仍在 mag.org/httpdocs(由 mediatemple 托管)。
我希望访问 www.mag.org 时会出现 django 站点(目前情况如此,在 conf 文件中进行了如此配置),而访问 archive.mag.org 时会出现来自 httpdocs 的旧站点,也就是说,它由 apache 提供服务,而不是 mod_python。
可以通过 mod-rewrite 或 mod-alias 来实现吗?
由 mediatemple dv 托管。httpd.conf 由 plesk 重写;httpd.conf 访问仅限于每个域/子域的单个 vhost.conf。
我所需要的只是 [/mag.org/subdomains/archive/conf/vhost.conf] 中的一个简单的 [DocumentRoot /var/www/vhosts/mag.org/httpdocs]。
现在 mag.org 指向由 mod-python 提供服务的 django 站点,而 archive.mag.org 指向由 apache 提供服务的 httpdocs 文件夹。
(我最初在 stack-overflow 上发布了这个,但我认为它更适合 serverfault。)
答案1
最好的方法是使用两个虚拟主机,一个用于 www.mag.org,一个用于 archive.mag.org
<VirtualHost *:80>
ServerName www.mag.org
DocumentRoot /path/to/django-site
</VirtualHost>
<VirtualHost *:80>
ServerName archive.mag.org
DocumentRoot /path/to/httpdocs
</VirtualHost>
这个答案关于虚拟主机和别名的信息可能会对您有帮助。
编辑:mod_rewrite
如果确实需要,可以使用 来执行此操作。如果有mod_proxy
,您还可以代理重写,这样地址就不会在用户地址栏中发生变化。
DocumentRoot /path/to/django-site
Alias /archive/ "/path/to/httpdocs/"
RewriteRule ^archive\.mag\.org(.*)$ http://www.mag.org/archive$1 [NC,P,L]
答案2
您可以在 vhost.conf 文件中执行以下操作:
ServerAdmin [email protected]
ServerName a server name
ServerAlias a server alias
DocumentRoot /path-to-django-web/root
<Directory /path-to-django-web/root >
Options FollowSymLinks Indexes
DirectoryIndex index.php index.html
AllowOverride All
Order allow,deny
Allow from all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#Do your rewrite magic here
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
</Directory>
这就是 MT DV 的 vhost 加载自定义 vhost 配置的方式,它不需要 VirtualHost 标签,因为它们已经由默认 VH 配置加载。
记得重新启动服务器并重新配置您的域,检查服务器管理器上有哪些可用选项,在终端中输入以下内容:
$ /usr/local/psa/admin/sbin/websrvmng --help
通常你必须重新配置vhost
之后重新启动 apache
$ /etc/init.d/httpd graceful
那就可以了。