在CodeIgniter站点中重写为不区分大小写的URL?
我正在为一个web应用程序使用CodeIgniter,现在我有一个紧迫的问题:我刚刚发现URL在基于Linux的服务器中是区分大小写的,我刚刚将一个站点从Windows移动到Linux。这意味着网站的链接不再有效,因为现在有了以前没有的所有小写URL 通过谷歌搜索,我发现您应该能够在.htaccess文件中执行类似操作:在CodeIgniter站点中重写为不区分大小写的URL?,url,mod-rewrite,case-sensitive,codeigniter-2,Url,Mod Rewrite,Case Sensitive,Codeigniter 2,我正在为一个web应用程序使用CodeIgniter,现在我有一个紧迫的问题:我刚刚发现URL在基于Linux的服务器中是区分大小写的,我刚刚将一个站点从Windows移动到Linux。这意味着网站的链接不再有效,因为现在有了以前没有的所有小写URL 通过谷歌搜索,我发现您应该能够在.htaccess文件中执行类似操作: RewriteMap lc int:tolower RewriteCond %{REQUEST_URI} [A-Z] RewriteRule (.*) ${lc:$1} [R
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
但是我试过了,结果一点都不好。。。!突然,我看到一个丑陋的错误页面,它盯着我看,说Tomcat服务器肯定出了什么问题或者类似的问题。不用说,我立即删除了这些行
但是为什么那时它不起作用,我应该怎么做呢
任何帮助都将不胜感激。事实上,他们发现这很容易,惊讶于没有人回答这个问题(也许这不是正确的方式,但我认为是这样的……): 我刚刚在config文件夹的routes.php文件中添加了一些路由: $route['About/Contact']=“About/Contact”
等等…Code igniter支持正则表达式-如果您希望在路由定义中明确,请以不区分大小写的方式定义它们:
$route['(?i)(about\/contact)'] = 'about/contact';
如果需要不区分大小写的路由,请执行以下对URI.php的更改 文件位置:
system/core/URI.php
查找
$this->\u parse\u request\u uri(),并将其替换为strtolower($this->\u parse\u request\u uri())
这不是一个很好的解决方案,因为您正在为同一路由密钥的每个外壳创建多个路由。这就是为什么建议使用modrewrite来处理它-这样无论请求中使用的大小写如何,您的路由都可以表达一次。这里,显示的url是用户键入的名称。我想要的是路由应该不区分大小写,显示的url应该区分大小写。我可以这样做吗?在我的代码片段中,赋值的左侧处理请求的大小写不敏感。分配的右侧指定请求将路由到的URL。因此,在任何情况下,对about/contact的请求都将以小写形式路由到about/contact。我认为您应该尝试在所需的大小写中指定路由URL。它应该会起作用。