嗨,伙计们请告诉我,因为代码点火器 3.1.11 路由器.php不起作用 它只适用于 http://maindomain/但不为 http://maindomain/about 工作,而是显示 404 页面
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
.htaccess 下面的文件
RewriteEngine on
RewriteCond $1 !^(index.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]
# php -- BEGIN cPanel-generated handler, do not edit
# This domain inherits the “PHP” package.
# php -- END cPanel-generated handler, do not edit
无论您写什么controller(URL)
,$route['(:any)'] = 'pages/view/$1';
都会将您的所有请求重定向到pages/view
,并且管理对您网站的所有请求将是一场噩梦。
比如说,你现在写http://maindomain/xyz/something
,因为它不需要(:any)
后的任何参数,它会转到404
但是http://maindomain/xyz
可以正常工作,因为它满足你的路由规则。
http://maindomain
工作的原因是因为您已将其定义为默认控制器。你可以这样写你的routes
——
$route['default_controller'] = 'pages/view';
$route['pages/(:any)'] = 'pages/view/$1'; // this will route any requests to pages/xyz to pages/view/xyz
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
看看它是否对你有帮助。
这看起来像是我遇到的类似问题,我最终通过编辑系统/核心/路由器.php并将第 396 行从
:$key = str_replace(array(':any', ':num'), array('[^/]+', '[0-9]+'), $key);
自
$key = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $key));
。不理想,因为它升级不安全,但它为我提供了诀窍(CI 3.1.11,PHP 7.4(