我如何消除"index.php"
在代码点火器中位于中心某处的每个路径中的突出?我要清洁非index.php-fied URLs
吗?
我如何消除"index.php"
在代码点火器中位于中心某处的每个路径中的突出?我要清洁非index.php-fied URLs
吗?
Answers:
如果您使用的是Apache,请将.htaccess文件放在根Web目录中,其中包含以下内容:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
另一个好的版本位于:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
我在删除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'] = '';
祝好运!
在应用程序的根目录中具有.htaccess文件,以及index.php文件。(检查htaccess扩展名是否正确,Bz htaccess.txt对我不起作用。)
并将以下规则添加到.htaccess文件中,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
然后在application / config / config.php文件中找到以下行
$config['index_page'] = 'index.php';
如下设置变量为空。
$config['index_page'] = '';
就是这样,它对我有用。
如果仍然无法正常工作,请尝试将这些变量(“ AUTO”,“ PATH_INFO”,“ QUERY_STRING”,“ REQUEST_URI”和“ ORIG_PATH_INFO”)一一替换
$config['uri_protocol'] = 'AUTO';
以上所有方法对我来说都失败了,然后我发现我未在虚拟主机文件/ etc / apache2 / sites-available / default中将AllowOverride None更改为AllowOverride All。
<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>
...
步骤1 =>将.htaccess文件放在存在应用程序和系统文件夹的根文件夹中。
步骤2 =>如果您的网络路径使用子文件夹-yourdomain.com/project/-,请在htaccess文件中使用以下代码
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]
只是以为我可能会补充
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
将是.htaccess,并确保以以下方式编辑您的application / config.php变量:
更换
$config['uri_protocol'] = “AUTO”
与
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
这肯定必须工作..尝试一下
确保您已启用mod_rewrite
(我尚未启用)。
启用:
sudo a2enmod rewrite
另外,替换AllowOverride None
为AllowOverride All
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]
actions
:stackoverflow.com/questions/14419757/…–
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
这是我的CI项目之一的.htaccess:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
最后一行应该提供您所需的内容,尽管您可能需要也可能不需要'/ projectFolder',具体取决于文件夹结构的设置方式。祝好运!
作为.htaccess文件,一个不错的选择是使用Kohana Framework提供的文件:
# 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才有效。
有两种方法可以在URL路径中为codeigniter解决index.php
1:在config / config.php中更改代码:
$config['index_page'] = 'index.php';
至
$config['index_page'] = '';
2:如果未创建,请在根路径中创建.htacess,复制以下代码:-
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
保存并检查您的Apache配置rewrite_module或mod_rewrite已启用。如果未启用,请启用。(最佳方法)!
我在许多不同的主机上的apache2上测试了它,效果很好。
使用这个htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
确保你有enabled mod_rewirte
一个phpinfo();
然后在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';
如果仍然无法使用,请尝试将其更改为第40/54行中$config['uri_protocol']='AUTO'
列出的内部application/config/config.php
文件之一:
有时我用:REQUEST_URI
代替AUTO
或"QUERY_STRING"
用于GODADDY hostings
看在 \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]
它对我有用,也希望你。
将.htaccess文件放在您的根Web目录中
进行任何调整(如果不满足上述条件)将无法正常工作。通常它在系统文件夹中,应该在根目录中。干杯!
application
目录而不是根目录中。
我尝试了许多解决方案,但是我想到的是:
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]
这将根据需要从网址中删除index.php。
我在.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
而不是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]
以及这个
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
如果此codeigniter应用程序作为子域托管,则该文件夹是子文件夹的名称,例如domainname / folder / index.php。
希望对您有用。谢谢。
第1步 :
在htaccess文件中添加
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
第2步 :
删除codeigniter配置中的index.php
$config['base_url'] = '';
$config['index_page'] = '';
第三步:
允许在Apache配置中覆盖htaccess(命令)
sudo nano /etc/apache2/apache2.conf并编辑文件并更改为
AllowOverride All
用于www文件夹
第4步 :
启用apache mod重写(命令)
sudo a2enmod重写
步骤5:
重新启动Apache(命令)
sudo /etc/init.d/apache2 restart