在linux服务器下url地址怎么去掉index.php/home
答案:2 悬赏:50 手机版
解决时间 2021-04-14 14:11
- 提问者网友:末路
- 2021-04-13 18:47
在linux服务器下url地址怎么去掉index.php/home
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-04-13 19:49
你这个属于url美化,就是用重写模式就行了。
顺便科普一下,url美化4种方式
1. pathinfo模式:www.a.com/index.php?r=Admin&m=index&a=index
2. 全路径模式:和上面类似
3. 兼容模式:既支持上面还支持www.a.com/index.php/Admin/Index/index
4. 重写模式:较低PHP版本可能不支持,需要在apache中配置问价打开重写模式,然后在根目录下加一个,htaccess文件。www.a.com直接就可以访问了
顺便科普一下,url美化4种方式
1. pathinfo模式:www.a.com/index.php?r=Admin&m=index&a=index
2. 全路径模式:和上面类似
3. 兼容模式:既支持上面还支持www.a.com/index.php/Admin/Index/index
4. 重写模式:较低PHP版本可能不支持,需要在apache中配置问价打开重写模式,然后在根目录下加一个,htaccess文件。www.a.com直接就可以访问了
全部回答
- 1楼网友:躲不过心动
- 2021-04-13 20:51
一》在linux里面设置
1.打开apache的配置文件,conf/httpd.conf :
loadmodule rewrite_module modules/mod_rewrite.so,把该行前的# 去掉 。
搜索 allowoverride none(配置文件中有多处),看注释信息,将相关.htaccess的该行信息改为allowoverride all。【其实apache 默认的都已经打开的】
2.在 ci 的根目录下,即在 index.php ,system的同级目录下,建立.htaccess,直接建立该文件名不会成功,可以先建立记事本文件,另存为该名的文件即可。内容如下( ci 手册上也有介绍):
rewriteengine on
rewritecond $1 !^(index\.php|images|robots\.txt)
rewriterule ^(.*)$ / index.php /$1 [l]
如果文件不是在www的根目录下,例如是: http://localhost/nianyi_2011/ index.php ,第三行
需要改写为rewriterule ^(.*)$ /nianyi_2011/ index.php /$1 [l]
另外,如果你的网站的根目录下面还有其他的文件夹,例:js,css,images,config等等文件夹,这需要过滤除去,第二行需要改写为:
rewritecond $1 !^index\.php|images|js|css|config|robots\.txt)。
3.将 ci 中配置文件(application/config/config.php)中$config['index_page'] ="index.php ";改写成$config['index_page'] = "";
4.ok,完成。还要记得重启apache。
二》在 windows 里面开发
以上的配置在 windows 上面是不起任何作用的,所以我们在 windows 里面需要设置我们的apache的虚拟主机,在apache里面找到apache-20\conf\extra\httpd-vhosts.conf 这个文件【我用的是服务是phpnow,很多的人用wamp】,同样找到此文件,在里面修改,例:
# http://www.phpnow.org
# filename: httpd-vhosts.conf
allowoverride all
order allow,deny
allow from all
namevirtualhost *
documentroot ../htdocs
servername default:80
errorlog logs/default-error_log
修改成:
# http://www.phpnow.org
# filename: httpd-vhosts.conf
rewriteengine on
rewritecond $1 !^(index\.php|images|js|css|config|robots\.txt)
rewriterule ^(.*)$ / index.php /$1 [l]
allowoverride all
order allow,deny
allow from all
namevirtualhost *
documentroot ../htdocs
servername default:80
errorlog logs/default-error_log
也就是把路由写到这里面来。记得重新启动服务。
继续修改你的配置文件:
$config['enable_query_strings'] = true
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
把$config['enable_query_strings'] 修改成 false 这样就关闭了查询字符串形式 url
现在你的文件的路径就可以写得了,例如:http://localhost/nianyi_2011/user/user_point
就相当于先前没有配置的路由: http://localhost/nianyi_2011/ index.php ?c=user&m=user_point 同样如果后面有参数的话,只用往后一次累加就好的了。
请注意:有时候我们这样写之后样式文件加载进来会有问题,找不到js css images等等目录,我们可以配置文件config.php里面设置$config['base_url'] = 'http://localhost/2011_11_cms/';站点的目录,接着我们在view模板文件之间添加 ,这样就能加载其他的文件的了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯