Apache 2.4.7永久重定向而不重写规则

时间:2014-08-20 16:35:31

标签: apache mod-alias

我刚刚从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 vhost的vhost,并添加了一个别名,只是为了让它工作,直到我将来有时间来解决它,但ServerAlias没有呈现网站,它呈现默认的html / index.html页面。

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

    sudo mkdir / etc / apache2 / sites-redirection

    1. 在apache2.conf上我添加了一条规则来加载所有重定向文件,这些网站可用的负载如下:
    2. IncludeOptional sites-enabled/*.conf
      
      IncludeOptional sites-redirection/*.conf
      
      1. 我使用重定向代码为每个站点添加一个文件。 这是一个例子:
      2. <VirtualHost *:80>
          ServerName origin.website.com
          RewriteEngine on
          Redirect 301 / http://destination.website.com
        </VirtualHost>
        

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

          

        sudo a2enable重写   sudo service apache2 restart