帮我解决这个问题。
举个例子:我有这个普通的网址“localhost/CI/index.php/base/storeurl”。
我怎样才能让 Codeigniter 知道寻找“localhost/CI/storeurl”。
我有一个名为 index 的函数,它接受 Base.php 类中的参数 storeURL。帮我解决这个问题。提前致谢。
帮我解决这个问题。
举个例子:我有这个普通的网址“localhost/CI/index.php/base/storeurl”。
我怎样才能让 Codeigniter 知道寻找“localhost/CI/storeurl”。
我有一个名为 index 的函数,它接受 Base.php 类中的参数 storeURL。帮我解决这个问题。提前致谢。
我终于找到了我要找的东西。这是我的代码在 routes.php 中的样子。
/* Custom Routes. */
// Store Normal Pages.
$route['home/(:any)'] = "base/home/$1";
$route['about/(:any)'] = "base/about/$1";
$route['services/(:any)'] = "base/services/$1";
$route['contact/(:any)'] = "base/contact/$1";
$route['feedback/(:any)'] = "base/feedback/$1";
// CategoryPage.
$route['category/(:any)/(:num)'] = "base/category/$1/$2";
// ProductPage.
$route['product/(:any)/(:num)'] = "base/product/$1/$2";
// For Main Home Page.
$route['(:any)'] = "base/home/$1";
我真的很感谢所有帮助我解决这个问题的人。谢谢你们。
index.php
在 WAMP 环境中从 CodeIgniter 中的 URL 中删除只需要三个步骤。
在 CodeIgniter 的根文件夹中创建.htaccess
文件并添加以下代码:
RewriteEngine On
RewriteBase /CodeIgniter/
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
通过以下方式更改为应用程序文件夹中$config['index_page']
的空字符串:config.php
$config['index_page'] = '';
rewrite_module
在httpd.conf
文件中启用 Apache 。
你也可以参考这篇文章
这是一些伪代码和一些正确方向的要点,可以帮助您入门。
首先,您需要从您的网址中删除 index.php。这里肯定有数百个问题已经回答了这部分问题,所以我将这部分留给你。
正如许多人评论的那样,没有办法开箱即用地实现这种 url 结构,并且需要相当多的代码才能工作。我实现这个特定设置的方式是将所有请求路由到单个控制器,并在该控制器内处理自定义路由。
为此,请在底部添加一条路线routes.php
作为全部内容。然后可以在此控制器之上添加其他控制器(新闻、事件等)的路由。这是一个示例 routes.php 可以帮助您入门。
配置/路由.php
// Other routes go up here
// Catch all route
$route['(:any)'] = 'page/view';
// Home page route
$route['default_controller'] = "page/index";
然后,您可以创建一个view
函数controllers/page.php
来检查 url(使用 codeigniters url helper),并加载与该 url 对应的正确视图。
控制器/page.php
class Page extends CI_Controller {
public function index()
{
// Do all code for your home page in here
}
public function view()
{
// Retrive the url string
$url = $this->uri->uri_string();
// Check if the corresponding view file exists
if (file_exists(APPPATH.'views/'.$url.'/index.php')){
// Load the view
$this->load->view($url.'/index');
} else {
show_404();
}
}
}
比如说,一个用户去http://yoursite.com/CI/about-us
,页面控制器的视图函数会从 url 中获取字符串about-us
并将其设置为 $url 变量,然后搜索你的文件结构以检查相应的视图文件是否存在 /application/views/about-us/index.php
。如果是,它将加载该视图文件,如果不是,它将重定向到 404。
以上都是从内存中输入的伪代码,所以它可能不会直接工作,但希望能给你一个关于如何达到你想要的结果的线索。
我总是无法让路由工作。最后我找到了解决方案。我只想分享以帮助有需要的人,因为我真的很喜欢 codeigniter,因为它既快速又轻便。我正在研究要在 $this->uri->segment(1) 上显示的动态类别标题。
$route['(:any)/method/(:any)'] = 'Class/method';
$route['(:any)/gallery/(:any)'] = 'Class/gallery';
$route['(:any)/listing/(:any)'] = 'Class/listing';
路由会注意到只要$this->uri->segment(2)是方法,就会去执行Class的方法。你的网址会很漂亮:
base_url()/business-services/gallery/6
base_url()/travel/gallery/12
我还了解到路线必须具体。如果网址是这样的:
base_url()/旅游/新加坡/listing/1201
那么你的路线必须是:
$route['(:any)/(:any)/listing/(:num)'] = 'Class/listing';
如果你有参数传入方法(取决于你是使用参数还是uri_segment),
$route['(:any)/(:any)/listing/(:num)'] = 'Class/listing/$1';
玩得开心 :)