关于添加后缀的问题
我在config里面设置了$config['url_suffix'] = ".html";
之后,我用了jquery 的Ajax, 在控制器中有一句代码为
$data['jquery'] = '
$("input").click(function(){
var status = $(this).val();
location.href = "'.site_url('buy/delete').'/" + status;
})';
$this->load->view('product/view',$data);
也就是说,点击 一个name为delete的input框,之后就会返回到buy/delete;
但是因为我设置了后缀.html,所以他返回的路径是
http://127.0.0.1/buy.hmtl/3
这样系统提示我无法找到该页面, 如果我删除后缀.html,返回路径为
http://127.0.0.1/buy/3
这样一切运行正常!
所以我不知道,如何在不删除.html的情况下解决这个问题呢? 翻页类不支持后缀,需自行扩展 但是这个不是翻页类啊,这只是一个转换页面的代码
location='http://127.0.0.1/buy/3';
这个也需要自己想办法 是吗? 那样的话,设置$config['url_suffix'] = ".html"; 岂不是累赘? 因为基本上,网站有可能会有类似 http://*****.org.cn/search.php?searchid=37&orderby=lastpost这样的链接形式吧? http://127.0.0.1/goods/buy.html/3的时候 显示错误
http://127.0.0.1/goods/buy/3 的时候 显示正常
那么有没有什么办法,在不删除 $config['url_suffix'] = ".html"; 的情况下,
让 http://127.0.0.1/goods/buy.html/3显示正常
也就是说 可以执行 goods类下的 buy 的方法,并且可以获取参数 3 ? 你去看翻页类源码就知道为什么了,翻页类比较简单,就两个方法 随便问一下,如果我设置了$config['url_suffix'] = ".html";那么在不采取第三方翻译类的情况下,我如何临时取消后缀呢? 因为它默认连接到http://127.0.0.1/goods/list.html/3这个显然不行。
如果说,不能临时取消后缀的话,那么一个网站不可能没有翻页,那么翻页就会跟后缀冲突,那就是鱼和熊掌不可兼得。如果是这样的话,$config['url_suffix'] = ".html";的设置 他的初衷是什么呢? 谁可以帮忙解决一下? 注意你这句话
location.href = "'.site_url('buy/delete').'/" + status;
放到 site_url 里面才会自动加后缀。
这里用到了 js,那就不能这么简单拼接了。
你可以在 js 里加一个后缀,在 CI 里去掉自动加后缀。
总之 CI 没考虑到 ajax 的情况,所以你肯定要修改 CI 源码或者扩展点什么东西。 我终于想了一个办法,比较雷人:
设置这个之后
$config['url_suffix'] = ".html"
再设置
$route['(:any)/(:any).html/(:any)'] = "$1/$2/$3"; 我觉得 js 和 php 根本就不要掺和到一起,有很多方案可以分离 PHP 和 js。
页:
[1]
2