mod_rewrite、mod_alias、子域名改变域名如何为网站提供服务?

mod_rewrite、mod_alias、子域名改变域名如何为网站提供服务?

我为杂志创建了一个 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

那就可以了。

相关内容