【问题标题】:Clean and friendly URL干净友好的网址
【发布时间】:2022-02-02 17:38:25
【问题描述】:

在这里提出了类似的问题:Htaccess rule to make urls like this ?page=1 look like /page/1 in Codeigniter

但我无法正确回答。

我的routes.php

$route[$key] = "home_controller/index";
$route['page/(:num)'] = 'home_controller/index/$1';

我的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

我的config.php

$root .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;
$config['index_page'] = '';
$config['uri_protocol'] = 'PATH_INFO';

无法理解语法。 一直在查看 Codeigniter Docs,例如; https://codeigniter.com/userguide3/general/routing.html 我似乎无法找到解决方案。

host/page/1

正在工作但未重定向到所需页面,换句话说,它与分页中的页面不对应

host/?page=1

正在工作,但我只是想摆脱?page=

我还需要修复host/category/?page=1 的路径 url 给host/category/page/1

【问题讨论】:

标签: php codeigniter url mod-rewrite routes


【解决方案1】:

我检查了你的代码, 我注意到你的路由很好。但是您在 config.php 文件中的错误。 请替换您的代码

$root .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', 
$_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;
$config['index_page'] = '';
$config['uri_protocol'] = 'PATH_INFO';

if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
 $uri = 'https://';
} else {
 $uri = 'http://';
}
$uri .= $_SERVER['HTTP_HOST'];
$config['base_url'] = $uri;
$config['base_url'] .= 
preg_replace('@/+$@','',dirname($_SERVER['SCRIPT_NAME'])).'/';


$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';

【讨论】:

  • 您好!首先感谢您的帮助。我试过你的代码仍然没有改变任何东西。
  • 哦,很抱歉听到这个消息。 $route['home'] = "home_controller/index"; $route['page/(:num)'] = 'home_controller/index/$1';尝试像这样使用您的索引功能;公共函数索引($num = null){ }
  • 当我调试案例并 echo $page; 时它仍然无法正常工作它返回尼尔。 (我在 $page 中替换了 $num)很好的尝试,但是当我尝试请求 page/2 时,它仍然停留在主页上,仅当我发送 ?page=2 分页响应并且页面更改时。
猜你喜欢
  • 2014-05-19
  • 2018-04-22
  • 1970-01-01
  • 2011-06-25
  • 2013-06-06
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2012-10-21
相关资源
最近更新 更多