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中编写命令或者在构建时将配置文件放置到对应位置来处理。

请提供下列资料作为参考。
请参考以下内容。
请参考下述要点。

广告
将在 10 秒后关闭
bannerAds