.htaccess的GET方法路由问题

时间:2018-09-02 22:47:27

标签: php .htaccess codeigniter url routing

我的页面上有一个搜索引擎,该引擎以get方法开头。搜索部分工作正常,但路由却不行。我认为,.htaccess文件中将出现以下问题:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$  /$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

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

RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

因此,当我单击搜索按钮时,它会将我重定向到 www.mysite.com/search?keyword=something。如果我将其从URL替换为www.mysite.com/search/something,则引擎正常工作。所以我只需要从.htaccess重定向它即可。 您需要知道的是,我是用Codeigniter编写的,路由部分是:

$route['/search/(:any)'] = "home/search/$2";

有什么主意吗?谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用php重定向以修改Routes.php文件

$route['/search/(:any)'] = "home/search/$2";

$route['search']['get'] = function ()
{
    $url='home/search/'.$_GET['keyword'];
    header("Location: $url");
die();
};