如何将Nginx的try_files配置规则转换为对应的Apache服务规则
你可以通过Apache的mod_rewrite模块实现和该Nginx配置完全等价的规则,具体操作如下:
前置准备
先确认Apache已启用mod_rewrite模块:
- Debian/Ubuntu系统可执行命令
a2enmod rewrite启用,之后执行systemctl restart apache2重启服务 - CentOS/RHEL系统需要编辑Apache主配置文件(通常为
/etc/httpd/conf/httpd.conf),取消LoadModule rewrite_module modules/mod_rewrite.so行的注释,之后执行systemctl restart httpd重启服务
配置方案
根据你的使用场景二选一即可:
场景1:在站点根目录的.htaccess文件中配置
直接在站点根目录新建/编辑.htaccess文件,写入以下内容:
RewriteEngine On # 当请求的文件不存在时触发后续规则 RewriteCond %{REQUEST_FILENAME} !-f # 当请求的目录不存在时触发后续规则 RewriteCond %{REQUEST_FILENAME} !-d # 将所有匹配请求重写到/index.php RewriteRule ^ /index.php [L]
注意:使用
.htaccess配置需要先在站点的Directory规则中开启AllowOverride All,否则规则不会生效,配置示例如下:<Directory /var/www/你的站点根目录绝对路径> AllowOverride All </Directory>
场景2:直接在Apache主配置/虚拟主机配置中写入
在对应站点的<Directory>块中直接添加重写规则即可:
<Directory /var/www/你的站点根目录绝对路径> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ /index.php [L] </Directory>
内容的提问来源于stack exchange,提问作者Baptiste Fourmont
相关产品推荐
相关产品推荐

