2016-06-30 74 views
0

我正在开发一个使用CI的网站,今天我正面临一个问题。 这是我的链接。如何从codeigniter中的url中删除类名和控制器名称?

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

你的路由顺序很重要......'default_controller'不应该在顶部,因为它会覆盖其他所有的东西......''default_controller'在底部。通过注释路由并逐个添加回来进行故障排除。 – Sparky

回答

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'文件和控制器必须设计网址:

$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

+0

好的,谢谢你让我试试。我会尽快更新你的先生。 – Anurup

+0

“但是你也必须在APPPATH.'config/config.php'文件和控制器中设计URL:”先生,我不明白我应该怎么做? – Anurup

+0

$ config ['base_url'] ='http:domainname/subfolder /';这是我的基础网址。 – Anurup

相关问题