如何删除“ index.php”在编码符的路径

我如何消除 "index.php"突出在每条路径的编码符中心的某个地方? 我要干净的非 index.php-fied URLs

126901 次浏览

按照 CI wiki 中的 本教程指示使用 mod_rewrite

这是我的一个 CI 项目的.htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]

最后一行应该提供您所需要的内容,不过您可能需要,也可能不需要“/projectFolder”,这取决于您的文件夹结构是如何设置的。祝你好运!

看看 system\application\config\config.php文件,有一个名为 index_page的变量

应该是这样的

$config['index_page'] = "index.php";

改成

$config['index_page'] = "";

然后,如前所述,您还需要向 .htaccess文件添加一个重写规则

注意: 在 CodeIgniter v2中,这个文件被移出系统文件夹到 application\config\config.php

如果您正在使用 Apache,请在您的根 web 目录中放置一个. htaccess 文件,其中包含以下内容:

RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Another good version is located here:

Http://snipplr.com/view/5966/codeigniter-htaccess/

我在删除 index.php 时遇到了一些大问题。一般来说。下面的 htaccess 已经在几个服务器上进行了测试,通常可以工作:

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


<Files "index.php">
AcceptPathInfo On
</Files>

如果在这方面没有任何进展,那么下一步就是调整配置文件。尝试一些其他的 URI 协议,例如。

| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO


$config['uri_protocol']  = 'ORIG_PATH_INFO';

如果您仍然没有任何运气尝试更改重写规则,以包括您的子文件夹。如果您在开发服务器上使用临时 URL 等,这通常是一个问题:

RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]

只要使用这些选项,就可以工作了。另外,确保你的索引文件设置为:

$config['index_page'] = '';

祝你好运!

我只是想补充一句

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

would be the .htaccess and be sure to edit your application/config.php variable in the following manner:

更换

$config['uri_protocol'] = “AUTO”

$config['uri_protocol'] = “REQUEST_URI”

上述所有方法对我来说都失败了,然后我发现我没有在我的虚拟主机文件 /etc/apache2/sites- 可用/默认中将 允许覆盖无更改为 允许覆盖全部

<VirtualHost *:80>
ServerAdmin webmaster@localhost


DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All    <---- replace None with All
</Directory>
<Directory /var/www >
Options Indexes FollowSymLinks MultiViews
AllowOverride All   <---  replace None with All
Order allow,deny
allow from all
</Directory>


...

在你的根目录下放置一个.htaccess 文件

Whatsoever tweaking you do - if the above is not met - it will not work. Usually its in the System folder, it should be in the root. Cheers!

Have the.htaccess file in the application root directory, along with the index.php file. (Check if the htaccess extension is correct , Bz htaccess.txt did not work for me.)

并将以下规则添加到.htaccess 文件,

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

Then find the following line in your application/config/config.php file

$config['index_page'] = 'index.php';

将变量设置为空,如下所示。

$config['index_page'] = '';

就是这样,对我很有效。

如果不能进一步工作,尝试用这些参数(‘ AUTO’、‘ PATH _ INFO’、‘ QUERY _ STRING’、‘ REQUEST _ URI’和‘ ORIG _ PATH _ INFO’)一个接一个地替换下面的变量

$config['uri_protocol'] = 'AUTO';
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

这一定行得通. . 试试看

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]

在更改 RewriteRule. * index.php/$0[ PT,L ]和项目文件夹名为“ codeigniter”之后。

我在许多不同的主机上测试了 apache2,它工作得很好。

use this htaccess

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

确保你有 enabled mod_rewirtephpinfo();

然后在 config/config.php 中执行以下操作:

$config['index_url']    = '';
|
| 'AUTO'            Default - auto detects
| 'PATH_INFO'       Uses the PATH_INFO
| 'QUERY_STRING'    Uses the QUERY_STRING
| 'REQUEST_URI'     Uses the REQUEST_URI
| 'ORIG_PATH_INFO'  Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';

if it doesn't works yet, try to change the $config['uri_protocol']='AUTO' to one of the listed inside application/config/config.php file on line 40/54:

有时我使用: REQUEST_URI而不是 AUTO或者 "QUERY_STRING"作为 goDaddy 主机

确保您启用了 mod_rewrite(我没有)。
To enable:

sudo a2enmod rewrite

另外,用 AllowOverride All代替 AllowOverride None

sudo gedit /etc/apache2/sites-available/default

终于..。

sudo /etc/init.d/apache2 restart

我的.htaccess 是

RewriteEngine on
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

\application\config\config.php文件中,有一个名为 index_page的变量

应该是这样的

$config['index_page'] = "index.php";

改成

$config['index_page'] = "";

然后,如前所述,您还需要像下面这样向 .htaccess文件添加一个重写规则:

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

对我有用,希望你也是。

这个能帮你 将此代码粘贴到. htacess 文件

中的应用程序文件夹中
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]


<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>

作为一个. htaccess 文件,一个好的选择是使用 科哈纳框架提供的:

# Turn on URL rewriting
RewriteEngine On


# Installation directory
RewriteBase /


# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>


# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]


# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

这是一个经过深思熟虑的. htaccess。

我已经尝试了很多方法,但是我想到的一个是:

DirectoryIndex index.php
RewriteEngine on


RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots  \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]

这将根据需要从 url 中删除 index.php。

完美的解决方案[在本地主机和实际域上测试]

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

步骤1 = > 将.htaccess 文件放置在存在应用程序和系统文件夹的根文件夹中。

Step 2 => If your web path using sub-folder like - yourdomain.com/project/ - then use following code in htaccess file

RewriteEngine on
RewriteBase    /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]

如果你的网络路径使用根文件夹如 -yourdomain.com-然后使用以下代码在 htaccess 文件

RewriteEngine on
RewriteBase    /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

如果您在 linux 上并且使用 apache2服务器,那么我们可能需要覆盖 apache2.conf 文件。Htaccess 文件。在 /etc/apache2/apache2.conf上查找 apache2配置文件。

搜索目录/var/www/Change 允许覆盖无-> 允许覆盖所有

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory

我在 .htaccess文件中使用这些行; 我将它们放在根文件夹中

RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

然后我就能进入 http://example.com/controller/function/parameter

instead of http://example.com/index.php/controller/function/parameter

这个给了我完全的魔力:

RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

希望能有帮助!

嗨,这个对我有用

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

as well as this

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]

其中的文件夹是子文件夹的名称,如果这个代码符应用程序是作为一个子域托管 例如域名/文件夹/index.php。

希望对你有用,谢谢。

在.htaccess 中复制以下代码

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

There are two way to solve index.php in url path for codeigniter

1: 在 config/config.php 中 更改密码:

$config['index_page'] = 'index.php';

$config['index_page'] = '';

2:Create .htacess in root path if not created,Copy the following code:-

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

保存它,然后签入 Apache Configuration rewrite _ module 或 mod _ rewrite is Enabled.If not then please enable。 (最佳方案) !

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

第一步:

在 htaccess 文件中添加此文件

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>

第二步:

在 codeigniter 配置中删除 index.php

$config['base_url'] = '';
$config['index_page'] = '';

第三步:

允许在 Apache 配置中重写 htaccess (命令)

Sudo nano/etc/apache2/apache2.conf 并编辑文件 & 更改为

AllowOverride All

用于 www 文件夹

第四步:

Enabled apache mod rewrite (Command)

sudo a2enmod rewrite

第五步:

重新启动 Apache (命令)

sudo /etc/init.d/apache2 restart