Apache的mod_rewrite设置笔记
通过这篇文章可以了解到的内容是什么? zhè de shì ?)
使用Docker在Apache中配置mod_rewrite,使请求的URL更智能化的方法。
无论指定什么URL,都通过index.php将处理传递给控制器的方法。
経緯 –> 情况发展经过
我尝试使用REST API,但对于URL指定的方式不太满意。当调用处理程序hoge时,我想要以下方式来指定URL。
想改变URL的表示方式:
https://localhost/api.php?action=hoge
我想要的URL格式是https://localhost/api/hoge。
解决方案 (jiě jué cè)
1. 放入模块
据说如果基于debian系操作系统的Docker镜像,需要使用这个命令来启用rewrite模块。
a2enmod rewrite。
2. 编辑Apache的配置文件。
在标记之间,编辑/etc/apache2/sites-available/000-default.conf文件。接下来,添加以下内容。
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
编辑.htaccess文件
我将编辑/var/www/html目录下的.htaccess文件。(如果文件不存在,则创建文件。)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^api/(.*)$ index.php
</IfModule>
通过进行此设置,所有以https://localhost/api/开头的URL请求都将执行index.php。
然后,在index.php中,可以通过$_SERVER[‘REQUEST_URI’]获取到的URL信息进行分割,以斜杆/为分隔符,然后将其作为参数提取出来就可以了。
(使用这种方法似乎就无法使用$_SERVER[‘PATH_INFO’]了。)
其他
在使用Docker时,可以通过在Dockerfile中编写命令或者在构建时将配置文件放置到对应位置来处理。