为什么mod_revite在Apache中不起作用?

时间:2017-12-15 08:24:24

标签: linux apache mod-rewrite debian

我有:Debian Linux 9上的Apache 2.4.2。Apache是​​从标准存储库安装的,也是mod_rewrite。

网站的根目录是: / var / www / mysite 。 为此目录配置了虚拟主机 local-mysite.ru

首先,我通过调用phpinfo()将根目录放在index.php文件中。我检查了这个输出:在Loaded Modules部分,我看到了mod_rewrite。这很好。

接下来,我打开测试网站的包装。此处启动脚本由以下URL打开:     http://local-mysite.ru/appadv/frontend/web 并在此URL上,正常打开:     http://local-mysite.ru/appadv/frontend/web/index.php

现在,当浏览器打开 http://local-mysite.ru 时,我需要这样做,然后重定向到网址 http://local-mysite.ru/appadv/frontend/web

为此,我用这个内容写了.htaccess:

HashMap<String, List<String>>()

我在网上测试人员http://htaccess.madewithlove.be测试了他。转换URI正确。

但是在我的主机URI转换没有发生!

为了进行调试,我编辑了 /etc/apache2/apache2.conf 文件中的选项以查看重定向消息:

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# If the request does not start with the web, we add it
RewriteCond %{REQUEST_URI} !^/(appadv/frontend/web)
RewriteRule (.*) /appadv/frontend/web/$1

# If the file or directory does not exist, go to /web/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /appadv/frontend/web/index.php

重新启动Apache。使用网址http://local-mysite.ru更新了网页。据我了解,标有[rewrite ...]或类似内容的行应出现在文件 /var/log/apache2/error.log 中。但没有类似的东西。

我不知道在哪里挖掘。

如果重要:通过网址 http://local-mysite.ru ,Apache会显示一个文件列表。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。

在/etc/apache2/apache2.conf文件中需要为/ var / www /目录设置从None到All的AllowOverride选项:

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