CodeIgniter 使 .htaccess 为 index.php 返回 404
Posted
技术标签:
【中文标题】CodeIgniter 使 .htaccess 为 index.php 返回 404【英文标题】:CodeIgniter make .htaccess return 404 for index.php 【发布时间】:2017-01-11 12:51:44 【问题描述】:这是我的 .htaccess
文件,用于从我的 CodeIgniter 项目 URL 中“删除 index.php
”。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|images|media|assets|common|themes|robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
这设法添加了另一种方式来导航 index.php
以外的 URL,使这些 URL 都合法:
my-project/index.php/home
和
my-project/home
我如何重写.htaccess
,以便该模式的所有网址
my-project/index.php/*
会返回 404 吗?
【问题讨论】:
我能问一下您为什么要这样做吗?允许某人将index.php
添加到 URL 中应该没有安全风险......如果他们甚至出于某种奇怪的原因考虑这样做的话。
@Sparky 它对我来说看起来很丑。底线。切割并晾干。
【参考方案1】:
更好的解决方案是设置.htacces
规则以将所有请求重定向到没有index.php
的URL。检查这个:
RewriteEngine On
RewriteBase /codeigniter/
# Removes index.php from ExpressionEngine URLs
RewriteCond %THE_REQUEST ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /codeigniter/$1$2 [R=301,NE,L]
# Directs all EE web requests through the site index file
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ /codeigniter/index.php/$1 [L]
免责声明 1. 如果您在根目录中,请在任何看到 /codeigniter/
的地方留下 /
。
免责声明 2. 似乎已被注释掉,但这取决于现场的编辑,代码将按原样为您工作。只需 c/p。
Credits.
【讨论】:
谢谢@Tpojka!你介意检查my other question吗?我认为这也与.htaccess
有关以上是关于CodeIgniter 使 .htaccess 为 index.php 返回 404的主要内容,如果未能解决你的问题,请参考以下文章
CodeIgniter 4 ... documentRoot不在公共环境中……htaccess无法正常工作
Codeigniter“未指定输入文件”即使粘贴新的.htaccess
使用 .htaccess 文件删除 CodeIgniter 中的 index.php