我开发了一个使用自定义MVC架构的项目。我是Apache世界的新手,所以我希望在这个问题上得到帮助。我在网上找到了很多教程,但是没有人喜欢我的兴趣。
我有这样的URL: http://knjiskicrv.comoj.com/index.php?page=book&id=1
我希望像这样显示:http://knjiskicrv.comoj.com/book/id/1
或者这个:http://knjiskicrv.comoj.com/index.php?page=faq进入:http://knjiskicrv.comoj.com/faq
如果查询(http://knjiskicrv.comoj.com/index.php)中没有page
,我想显示:http://knjiskicrv.comoj.com/
同样在查询(http://knjiskicrv.comoj.com/index.php?category=2)中没有page
,它应该像这样http://knjiskicrv.comoj.com/category/2
希望有人能帮忙。谢谢。
实际上,你的问题是一个两步问题。你首先需要理解什么是MVC中的"路由"。如果你有自己的MVC框架实现,而你不支持路由,那么这可能意味着你之前甚至不知道它是如何工作的。(悲伤但真实)
在MVC框架中,你使用路由器设置路由,路由器为你分析url,说嘿,我发现这个url匹配你的请求,继续和它一起工作。
那么,您的控制器接收到路由到自身的请求,并按照他认为合适的方式解析url。例如使用explosion ('/', $_SERVER['REQUEST_URI']),然后读取url的不同部分以映射到期望的变量。
所有这些都是非常理论上的,因为有无数的方法来实现它的自定义方式。您唯一需要使用的是mod_rewrite魔法,将所有请求传递给index.php,它将路由所有内容。查看下面的url来了解mod_rewrite,这是一个非常复杂的主题:
http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/我通常会这样做,但我在家无法访问它:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^assets/
RewriteRule .* index.php
这会将所有流量重定向到index.php,然后你可以使用$_SERVER['REQUEST_URI']来分析请求。