为什么生成SEO友好URL不能使用Codeigniter中的路由?

时间:2016-04-12 08:03:49

标签: php codeigniter routing url-routing

我正在使用Codeigniter开发一个应用程序,我正在尝试生成SEO友好的URL,但没有任何工作正常。

我在routes文件中尝试了以下代码:

$route['default_controller'] = "main";
$route['404_override'] = '';
$route['add-quiz']     = 'main/add_quiz/';
$route['category-wise-questions/(:any)']    = 'category_wise_questions/$1';

尽管它产生了:

  

http://localhost/appname/main/add_quiz

而不是:

  

http://localhost/appname/main/add-quiz

2 个答案:

答案 0 :(得分:0)

您正在使用不会更改网址的路由,只会将网址路由到特定控制器:

$route['add-quiz']     = 'main/add_quiz/';

你唯一要做的就是告诉CI指导网址:" add_quiz"到控制器" add-quiz" (而不是" add_quiz")。

要使其正常工作,您需要在.htaccess中添加一行,例如:

RewriteRule /main/add-quiz /main/add_quiz [L]

导致类似:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L] #remove index.php
    RewriteRule /main/add-quiz /main/add_quiz [L]
</IfModule> 

然后,所有对&{39; main/add_quiz&#39;的请求将更改为&#39; main/add-quiz&#39;。如果您的控制器被调用:&#39; add_quiz&#39;你应该保留你的route.php。

也许您应该将.htaccess文件调整到本地/远程项目,并进行一些更改以使其正常工作。

希望它有所帮助!

答案 1 :(得分:0)

$route['main/add-quiz'] ='main/add_quiz/';应该起作用。
我尝试了类似的方法:
$route['mumbai/piles-doctor'] = 'mumbai/piles_doctor';,效果很好。

  

无需更新.htaccess。

还要确保将translate_uri_dashes设置为其默认值'False'。 $route['translate_uri_dashes'] = FALSE;

  

尽管其他人可以在这里引用更好的解决方案stackoverflow answer

相关问题