2
当我第一次开始了我的网站,网址是按以下格式:CodeIgniter的查询字符串重写在.htaccess
project.php?projectID=1&pageID=2
几年前我修改的.htaccess重写这些使用段,像这样:
project/1/2
我更新了所有内部链接以使用分段格式,但这很好,因为它仍支持旧格式的任何外部传入链接。
现在我切换到CodeIgniter,使用分段格式渲染我的页面很容易,但我正在努力解决如何支持旧的查询字符串URL。
我试图在CodeIgniter中原生支持查询字符串似乎破坏了分段的URL,所以它看起来像我不能同时支持。在CodeIgniter中设置一个路径将查询字符串重定向到控制器似乎不起作用。例如:
$route['project.php?projectID=(:any)&pageID=(:any)'] = 'home/projectview/$1/$2';
我的第二个想法是直接修改的.htaccess到查询字符串重定向到控制器,就像这样:
(请注意,我还使用的.htaccess重写,消除外观index.php中的CI URL)
RewriteRule ^project.php?projectID=(\d*)&pageID=(\d*) project/$1/$2/ [L]
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php/$1 [L]
但是,这个重写规则似乎也不起作用。它重定向到我的CodeIgniter 404而不被重写,甚至通过删除默认的index.php规则它不重定向,所以我假设我的正则表达式/ .htaccess格式中有一些东西是不正确的。
这很好,谢谢,但我可以要求一个修订?我也适应'&pageID ='缺席(默认为第1页)。如何使这部分正则表达式可选? – monkeymatrix
@monkeymatrix查看编辑 –
令人惊叹的,谢谢你的接受! :) – monkeymatrix