Ubuntu 14.04:Apache 2.4.7虚拟主机无法正常工作/重定向

Dup*_*tta 6 apache ubuntu virtualhost

我在我的Ubuntu 14.04机器上安装了Apache 2.4.7,我的一些虚拟主机不同意我的意见.我有5个虚拟主机,我正在尝试运行; 其中3个工作,2个不工作.两个不起作用的.conf文件是:

002-tmpnet.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/tmpnet
    ServerName  tmpnet
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/html/tmpnet/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        #Order allow,deny
        #allow from all
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

003-tmpcom.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/tmpcom
    ServerName  tmpcom
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/html/tmpcom>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        #Order allow,deny
        #allow from all
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

这两个都回归了

500 Internal server errors
Run Code Online (Sandbox Code Playgroud)

当试图访问他们.如果我通过localhost(即localhost/html/tmpnet)访问它们,它可以正常工作,而不是在尝试使用虚拟主机时.

我的主机文件是:

127.0.0.1   localhost
127.0.1.1   Eagle
127.0.1.1   tmpcom
127.0.1.1   tmpbiz
127.0.1.1   tmporg
127.0.1.1   tmpnet
127.0.1.1   thatsmybrick

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)

我的apache2.conf是:

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

HostnameLookups on
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride All
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf
Run Code Online (Sandbox Code Playgroud)

我已经被困在这一段很长一段时间了,我真的很感激一些帮助.任何指向正确方向的都会令人惊叹.

谢谢

Hat*_*ber 7

这可能有点晚了,不确定你是否找到了解决方案,但这就是我所做的.在花了很多时间修改我的配置文件并调整我的vhost之后,我决定使用a2dissite 000 ...默认站点并重新加载apache.一旦我这样做,重定向就像epxected一样工作.当你在服务器上有多个站点时,我不知道这将如何展开,如果它将默认为第一个加载的vhost或...我总是认为apache必须有一个默认主机,我可以那是错的.


Mar*_*uce 6

我不仅要禁用默认值:

sudo a2dissite 000-default.conf
Run Code Online (Sandbox Code Playgroud)

但我也不得不重新加载apache作为sudo - 没有sudo它没有正确重新加载

sudo service apache2 reload
Run Code Online (Sandbox Code Playgroud)

  • SUDO在重新加载期间完成了工作!谢谢 :) (2认同)

小智 1

您还面临这个问题吗?

您是否查看了位于 /var/log/apache2/error.log 的错误日志?错误日志是不言自明的,可以很好地解决问题。

我的机器上的错误显示了这一点(错误声明的后半部分)

.htaccess:无效命令“RewriteEngine”,可能拼写错误或由未包含在服务器配置中的模块定义

就我而言,Apache 模块重写未启用。我启用了该模块,瞧,虚拟主机设置生效了。

我还发现您正在使用语句“AllowOverride All”,这表明您正在尝试使用重写模块。使用命令启用模块“重写”(如果尚未启用),sudo a2enmod rewrite然后重新启动 apache2sudo /etc/init.d/apache2 restart

看看这是否有帮助!