首页 > 解决方案 > htaccess 重写 URL 不适用于 codeigniter 代码

问题描述

我正在尝试重写 URL,以便 /foo -> index.php。

index.php 由 codeigniter 3 提供支持。 bar.php 是一个独立的 php 文件。

这是从我的 .htaccess 中截取的:

//Test 1. Bar.php displayed. This works as exptected. 
RewriteRule ^/?foo1/?$ /bar.php [QSA,L] 


//Test 2. Redirects succesfully to index.php. Works as expected.
RewriteRule ^/?foo2/?$ /index.php [R=301,QSA,L]    


//Test 3. Goes to codeigniter 404 page and does NOT display the homepage. 
Does not work as expected
RewriteRule ^/?foo3/?$ /index.php [QSA,L] 

为什么测试 3 没有按预期显示?我的 codeigniter 代码中有一些东西在尝试重写 URL 时不起作用。任何想法如何解决这一问题?有解决方法吗?

全面披露:长期目标是能够拥有具有如下结构的 URL:example.com/foo1/foo2/foo3/?query1=xxxx&query2=yyyy 重写为 example.com/bar/bar1.php?queryA= foo2&queryB=foo3&query1=xxxx&query2=yyyy

这可以在codeigniter框架(route.php)而不是htaccess中“轻松”完成吗?从开发时间的角度来看,最好通过 .htaccess 让它工作。

标签: phpcodeigniter.htaccess

解决方案


看看https://gist.github.com/keithmorris/3023560

这包括我在所有项目中使用的相当标准的 htaccess 文件。然后,您可以使用 CI 路由功能来定义不同位的位置。

请记住,使用 CI,您可以在 url 中传递其他元素,例如 example.com/foo1/foo2/foo3/query1/query2。


推荐阅读