我有: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会显示一个文件列表。
答案 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>