[edit]:How to remove "index.php" in codeigniter's path的复制品[那里的解决方案对我不起作用]
我是第一次尝试使用codeigniter而且我还是新手。 我想从我的网址中删除index.php。
已安装的代码点火器
用我自己的
我的.htaccess
中有这个<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#'system' can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#When your application folder isn't in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename 'application' to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn't true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
我的重写肯定是打开的,我在我的root中加载了一个phpinfo页面,它显示了加载的模块。 我还检查了httpd.conf
当我从NetBeans运行时,我被定向到localhost:8888 / domain / index.php并且我的索引页面加载了
当我去localhost:8888 / domain然后我的index.php也加载
当我去localhost:8888 / domain / welcome或localhost:8888 / domain / welcome.php我得到404
The requested URL /index.php/welcome was not found on this server.
当我去localhost:8888 / domain / index.php / welcome我被定向到欢迎控制器,但它只是加载我的index.php但没有标记。
我也在.htaccess中试过这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
我得到:
这也没有用(我知道,他们所有的意思都是做同样的事情):
<IfModule mod_rewrite.c>
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]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
我 在config / config.php中:
$config['base_url'] = 'localhost:8888/domain.com/';
$config['index_page'] = '';
答案 0 :(得分:5)
我用默认的CI索引替换了我自己的索引(也就是说,我将其返回到开箱即用的方式)。
然后我将domain/index.php/pages/view/page.php
路由到domain/index.php/page.php
然后我运行了Nishant的.htaccess代码,虽然它似乎不起作用(在通常的网址上显示的网站的静态非风格版本,但没有在index.php的网址上显示)它可能帮助我找到了解。我也将RewriteEngine On
改为RewriteEngine on
,虽然我很确定我以前曾尝试过。
在这些步骤之后,我再回到sbaaaang建议的代码(这有点像以前尝试过的版本ID),这次它起作用了。
对于任何可能遇到.htaccess麻烦的人,我建议留下一些东西,因为它们是从盒子里出来然后穿过tutes(而不是像我一样跳进去)。
我的.htaccess像这样结束了
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
和配置变量如:
$config['base_url'] = '';
$config['index_page'] = '';
答案 1 :(得分:2)
$config['base_url'] = 'http://'.$_SERVER['HTTP_HOST'].'/';
$config['index_page'] = '';
然后.htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
我也注意到你说“用我自己替换了index.php” 这是错误的,保留原始的Codeigniter index.php文件 主根或你永远不会运行codeigniter:D
答案 2 :(得分:1)
希望这会对你有所帮助
您面临的问题是您删除了index.php并将其替换为您自己的index.php。
而是将codeigniter文件夹放在localhost上,并在index.php的根目录下放置 [本地主机,在浏览器中打开以下网址。
http://localhost:8888/domain/index.php/welcome
如果工作正常,则表示显示codeigniter的欢迎页面,然后您可以考虑通过添加
从网址中删除index.phpRewriteEngine on
RewriteCond $1 !^(index\.php|static)
RewriteRule ^(.*)$ /index.php/$1 [L]
在.htaccess文件中,重写条件的第二行将确保重写规则不会执行,当url中有index.php或static时,使用static可以将所有静态内容放入静态文件夹。
现在当url中没有index.php或static时,重写规则会重写它。
假设网址为
http://localhost:8888/domain/welcome
将重写为
http://localhost:8888/domain/index.php/welcome
在每种情况下,您的代码都将通过仅包含index.php的网址提供。
答案 3 :(得分:0)
尝试这个非常简单的代码,它对我来说很好:
将项目文件夹的名称而不是project2更改为您的配置base_url =“”
RewriteEngine on
RewriteCond $1 !^(index\.php|uploads|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /project2/index.php/$1 [L]