2

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

网站在这里: 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 的基本 url,一切都和以前一样。如果有人可以提供帮助,我将不胜感激。

我的 .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

我的路线.php

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

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

亲切的问候

4

2 回答 2

1

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

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

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

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

mod_rewrite的文档在这方面得到了更深入的了解:

修改查询字符串

默认情况下,查询字符串会原封不动地传递。但是,您可以在包含查询字符串部分的替换字符串中创建 URL。只需在替换字符串中使用问号来指示应将以下文本重新注入到查询字符串中。当您想删除现有的查询字符串时,只用问号结束替换字符串。要组合新旧查询字符串,请使用 [QSA] 标志。

于 2012-12-07T03:57:30.267 回答
0

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

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

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

于 2012-12-07T03:45:04.157 回答