我有一个奇怪的问题。一切都很好,直到昨天突然发现这个问题。
网站在这里: 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?
我检查了我的.htaaccess并将其重置为默认值但它仍然不会影响它。我检查了我的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 */
亲切的问候
答案 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和查询字符串之间添加'?'到您的配置文件应该至少解析链接。