0

我刚刚从 2.2.x 切换到运行 2.4.7 的新服务器,现在我遇到了一些问题。我解决了迄今为止遇到的大多数问题,除了这个永久重定向问题。这是代码:

<VirtualHost *:80>
    ServerName example.com
    ErrorLog /var/log/apache2/example.com.error.log
    CustomLog /var/log/apache2/example.com.custom.log common
    Redirect 301 / http://www.example.com/
#    RedirectMatch permanent /(.*) http://www.example.com/$1
</VirtualHost>

<VirtualHost *:80>
        ServerAdmin 393@7079.net
        ServerName www.example.com
#       ServerAlias example.com
        DocumentRoot /home/www/example
        ErrorLog /var/log/apache2/www.example.com.error.log
        CustomLog /var/log/apache2/www.example.com.custom.log common
        DirectoryIndex index.jsp index.html
        <IfModule jk_module>
                JkMount /*.cfm worker1
                JkMount /*.cfc worker1
                JkMount /*.do worker1
                JkMount /*.jsp worker1
                JkMount /*.cfchart worker1
                JkMount /*.cfm/* worker1
                JkMount /*.cfml/* worker1
                #JkMount /railo-context/* worker1
                JkLogFile /var/log/apache2/mod_jk.log
        </IfModule>

        <Directory /home/www/example/>
                Require all granted
        </Directory>
</VirtualHost>

当我访问http://example.com时,它显示 /var/www/html 站点的默认 apache 页面,而不是执行重定向。我有 2 台运行 2.4.7 的服务器,它们的行为方式相同,旧服务器运行此代码正常。我尝试使用您被注释掉的 RedirectMatch,因为它也不起作用。我还注释掉了第一个重定向到 www 虚拟主机的虚拟主机,并为其添加了一个别名,只是为了让它工作,直到我将来有时间让它弄清楚,但是 ServerAlias 没有渲染该站点,它渲染了默认的 html/index.html 页面。

我很困惑,不知道从哪里开始。无数小时的谷歌搜索和搜索论坛,我没有遇到一个单一的解决方案。也许其他人已经经历过并解决了这个问题,如果是这样,请告诉我解决方案是什么。

顺便说一句,我正在寻找一个非“重写”的解决方案,我更喜欢永久重定向。

4

2 回答 2

0

临时解决方法是删除默认的 apache vhost。这是一个临时修复,一旦将另一个 vhost 添加到 apache 就会成为问题,因为其中一个 vhost 必须是“默认”。

于 2014-08-20T18:33:31.613 回答
0

我已经在 Ubuntu 14.04LTS 全新安装上使用 Apache 2.4.7 玩了很多天,在重定向方面我遇到了与您类似的问题......

似乎在 Apache 2.4.7 上调用代码的顺序会影响结果。对我有用的规则是重定向指令应该总是在主站点 VirtualHost 之后

我在每个站点上解决此问题的方法如下:

  1. 我创建了一个名为 sites-redirection 的额外文件夹

sudo mkdir /etc/apache2/sites-redirection

  1. 在 apache2.conf 上,我添加了一条规则,以在站点可用加载之后加载所有重定向文件,如下所示:
IncludeOptional sites-enabled/*.conf

IncludeOptional sites-redirection/*.conf
  1. 我使用重定向代码为每个站点添加一个文件。这是一个例子:
<VirtualHost *:80>
  ServerName origin.website.com
  RewriteEngine on
  Redirect 301 / http://destination.website.com
</VirtualHost>

要使 Rewrite 指令起作用,您应该安装 mod_rewrite 并重新启动 apache2 服务器。

sudo a2enable rewrite sudo service apache2 restart

于 2015-03-01T09:59:08.563 回答