【问题标题】:CodeIgniter URL rewritingCodeIgniter URL 重写
【发布时间】:2011-12-21 09:55:05
【问题描述】:

我正在尝试重写 CodeIgniter 应用程序的 URL,但它似乎不起作用。 我设置了以下内容;

$route['pages/(:num)/(:any)'] = "pages/view/$1/$2";
$config['index_page'] = '';

然后我有以下.htaccess;

RewriteEngine on
RewriteBase /

RewriteRule ^pages/(.*)/(.*)$ /index.php/pages/view/$1/$2 [L]

它只是说找不到页面(Apache 错误,而不是 CodeIgniter)。 它在我浏览到原始链接 (http://domain.tld/index.php/pages/view/1/welcome) 时有效,但在浏览到“所需”链接 (http://domain.tld/pages) 时无效/1/欢迎)。

我做错了什么?

【问题讨论】:

  • 我认为你需要有 htaccess 才能从 url 中删除 index.php,它应该可以工作
  • 不完全是,它不仅删除了'index.php',还删除了方法的名称;查看。
  • 您是否检查过 apache 日志以了解 apache 将其重写为什么?此外,您可能需要 1 美元的非贪婪版本匹配,即 ^pages/(.*?)/(.*)$
  • 我不想听起来太笨,但显然我的服务器还不支持 htaccess,我更改了 apache vhost,现在它正在做一些调整。

标签: php .htaccess codeigniter


【解决方案1】:

试试:

$route["pages/(.*)/(.*)"] = "pages/view/$1/$2"; //和你的htacess,删除你当前的规则和 重写规则 ^(.*)$ index.php/$1 [L]

【讨论】:

  • 用这个想出来的。谢谢。
【解决方案2】:

可能是您的 RewriteRule 中缺少 ? 吗?

# Substitute " >>?<< " with "?". It's there to point you to the change.
RewriteRule ^pages/(.*)/(.*)$ /index.php >>?<< /pages/view/$1/$2 [L]

【讨论】:

  • 不是,Codeigniter 使用斜线格式,加上手动使用重写版本的操作状态
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2013-12-15
相关资源
最近更新 更多