【问题标题】:CodeIgniter - removed index.php AND .php extension using a .htaccessCodeIgniter - 使用 .htaccess 删除 index.php 和 .php 扩展
【发布时间】:2018-12-04 06:58:13
【问题描述】:

在我收到“重复问题”之前,请注意,我正在询问如何将一些 mod_rewrite 规则添加到我当前的 .htaccess 中:

Options +FollowSymLinks

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 

我的问题是,我在应用程序目录之外有未使用控制器设置的文件。那么,如何在保留从 URL 中删除 index.php(或 index)参数的能力的同时,使用当前的 .htaccess 彻底删除所有 .php 扩展名?

编辑:我尝试了另一个 RewriteCond 和 RewriteRule。但是 CodeIgniter 会抛出 404,因为它认为它是一个控制器。

【问题讨论】:

  • 您是否尝试在 CodeIgniter 规则之后添加第二个 RewriteCondRewriteRulestackoverflow.com/a/4026967/2191572。如果您已经尝试过,请用您的结果更新您的问题以及它是如何失败的,否则会被“重复问题”打耳光。
  • 道歉 - 请参阅更新后的问题。
  • 您是否尝试过将规则放在 CodeIgniter 规则之前?
  • 见鬼。那行得通。您能否将其放入答案中,以便我将其标记为已解决并为您投票? :)
  • 没问题,完成

标签: php .htaccess codeigniter mod-rewrite


【解决方案1】:

根据Remove .php extension with .htaccess你应该添加

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

到你的.htaccess 但是你应该像这样在 CodeIgniter 规则之前添加它:

Options +FollowSymLinks

RewriteEngine on

# Serve up non-CodeIgniter PHP files if they are requested without their extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

# CodeIgniter rewrite rules
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

由于mod_rewrite 按顺序处理和应用规则,因此您希望先尝试非 CodeIgniter 文件,然后再进入 CodeIgniter 规则。


我与这个网站没有任何关系,我相信还有其他人喜欢它,但如果你只想用各种 URL 测试重写规则,请查看https://htaccess.madewithlove.be/

【讨论】:

  • 我想知道我的问题是什么?
【解决方案2】:

用于从 CodeIgniter 中的 URL 中删除 index.php。您必须按照这些步骤操作。

1 .在 .htaccess 中添加以下代码,并且 .htaccess 必须在根文件夹中。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 
</IfModule>

2 。将$config['index_page'] = 'index.php'; 更改为$config['index_page'] = '';

您不需要在 CodeIgniter 中删除 .php,因为它不存在。 如果你想学习!所以使用此代码删除.php 扩展 将此代码添加到.htaccess

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

【讨论】:

    猜你喜欢
    • 2012-08-15
    • 2019-04-06
    • 2021-12-08
    • 1970-01-01
    • 2023-03-18
    • 2011-03-02
    • 2016-05-13
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多