【发布时间】:2014-01-24 22:58:18
【问题描述】:
当我第一次启动我的网站时,网址采用以下格式:
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 重写来消除 CI URL 中 index.php 的出现)
RewriteRule ^project.php?projectID=(\d*)&pageID=(\d*) project/$1/$2/ [L]
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php/$1 [L]
但是,这个重写规则似乎也不起作用。它重定向到我的 CodeIgniter 404 而不被重写,甚至通过删除默认的 index.php 规则它也不会重定向,所以我假设我的 regex/.htaccess 格式中有一些不正确的东西。
【问题讨论】:
标签: regex .htaccess codeigniter mod-rewrite query-string