重定向的Codeigniter URL或额外的部分将添加到URL

时间:2012-11-09 16:26:37

标签: php codeigniter url

我有一个奇怪的问题。一切都很好,直到昨天突然发现这个问题。

网站在这里: http://www.famtripsandinspectionvisits.com/all_trips

如果您访问上页并点击“india-kerala”链接,则会转到以下页面。

http://www.famtripsandinspectionvisits.com/trips/old_trips/india_kerala

然而,浏览器会重定向到此页面: http://www.famtripsandinspectionvisits.com/all_trips/old_trips/india_kerala?/trips/old_trips/india_kerala 这表明添加了以下部分是额外的。 all_trips / old_trips / india_kerala?

我检查了我的.htaac​​cess并将其重置为默认值但它仍然不会影响它。我检查了我的cofnig.php的基本网址,一切都和以前一样。如果有人可以提供帮助,我会恭维。

我的.htaccess文件

# Use PHP5 Single php.ini as default
AddHandler application/x-httpd-php5s .php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]  

Redirect 301 /invest.php http://www.famtripsandinspectionvisits.com/investment_opportunity
Redirect 301 /buyers.php http://www.famtripsandinspectionvisits.com/buyers
Redirect 301 /trips.php http://www.famtripsandinspectionvisits.com/all_trips
Redirect 301 /sellers.php http://www.famtripsandinspectionvisits.com/sellers
Redirect 301 /contact.php http://www.famtripsandinspectionvisits.com/contact_us
Redirect 301 /about.php http://www.famtripsandinspectionvisits.com/about_us
Redirect 301 /login.php http://www.famtripsandinspectionvisits.com/login
Redirect 301 /trip-kerala.php http://www.famtripsandinspectionvisits.com/trips/old_trips/india_kerala
Redirect 301 /trip-burundi.php http://www.famtripsandinspectionvisits.com/trips/up_coming_trips/burundi_africa
Redirect 301 /register.php http://www.famtripsandinspectionvisits.com/register
Redirect 301 /trips http://www.famtripsandinspectionvisits.com/all_trips

我的routes.php

$route['default_controller'] = "site";
$route['404_override'] = '';

$route['fam_admin'] = "fam_admin/login";
/* End of file routes.php */
/* Location: ./application/config/routes.php */

亲切的问候

2 个答案:

答案 0 :(得分:1)

我认为你需要做的是告诉mod_rewrite你要组合新旧查询字符串,这需要使用QSA标志:

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

这是我的Codeigniter项目的“标准”基本规则集,其余的我完成了与自定义路由和偶尔的重定向有关。

仅使用问号结束替换(在没有QSA标志的情况下)将删除现有的查询字符串并将其替换为新的查询字符串,我认为这解释了您所看到的内容。

documentation for mod_rewrite对此有更深入的了解:

  

修改查询字符串

     

默认情况下,查询字符串不会更改。您可以,   但是,在包含查询的替换字符串中创建URL   字符串部分。只需在替换字符串中使用问号   表示应将以下文本重新注入   请求参数。如果要删除现有查询字符串,请结束   替换字符串只有一个问号。结合新旧   查询字符串,使用[QSA]标志。

答案 1 :(得分:0)

我有类似的问题。尝试编辑config.php看起来像这样:

$config['index_page'] = 'index.php?';

我假设您正在使用CodeIgniter的一种URL方法,并且您(假设)使用IIS来托管。我不知道如何删除'?'在URL和查询字符串之间添加'?'到您的配置文件应该至少解析链接。