我正在使用CI开发网站,今天我遇到了一个问题。 这是我的链接。
http://example.com/subfolder/site/page/Snowman_Trek_24_Days
我想改变我的链接
http://example.com/subfolder/Snowman_Trek_24_Days
我更新配置文件 -
$config['uri_protocol'] = 'QUERY_STRING';
$config['enable_query_strings'] = TRUE;
我也测试了这个 -
$config['uri_protocol'] = 'PATH_INFO';
$config['enable_query_strings'] = TRUE;
在route.php文件中我使用了这段代码 -
$route['default_controller'] = 'site';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['page/(:any)'] = "site/page/$1";
我的htaccess代码是: -
RewriteEngine On
RewriteBase /folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
完成所有这些后,我收到此错误: - 无法确定应显示的内容。路由文件中尚未指定默认路由。任何人都可以帮助我。
答案 0 :(得分:0)
尝试使用此功能:在.htaccess
文件中
RewriteEngine On
RewriteBase /subfolder/# is this subfolder from URL we are speaking about?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^subfolder/(.*)$ index.php?/subfolder/$1 [QSA,L]
现在您的所有请求都应该避免URL中的子文件夹段。
但您还必须在APPPATH.'config/config.php'
文件和控制器中设计URL以具有:
$route['(:any)'] = "site/page/$1";
所以
http://example.com/subfolder/Snowman_Trek_24_Days
应该是有效的路径。
请注意(:any)
通配符,因为它将重新路由任何其他请求,而不是site/page/$1
,并且必须位于routes.php
文件的末尾。你想要执行的任何其他路由,你必须明确地放在那个路由之前。例如:
$route['login'] = 'auth/login';
$route['about'] = 'staticpage/about';
$route['contact'] = 'staticpage/contact';
$route['(:any)'] = "site/page/$1";
docs中的更多路由。