重写url以隐藏index.php并使查询更美观

重写url以隐藏index.php并使查询更美观,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我用定制的MVC架构开发了这个项目。我是Apache world的新手,所以我非常感谢您在这件事上的帮助。在网上我找到了很多教程,但没有人喜欢我的兴趣 我有这样的URL: 我想这样展示: 或者这个: 为此: 如果查询中没有页面(http://knjiskicrv.comoj.com/index.php),我想展示: 查询中也没有页面(http://knjiskicrv.comoj.com/index.php?category=2),应该是这样的 希望有人能帮忙。谢谢。事实上,你的问题有两个步骤。

我用定制的MVC架构开发了这个项目。我是Apache world的新手,所以我非常感谢您在这件事上的帮助。在网上我找到了很多教程,但没有人喜欢我的兴趣

我有这样的URL:

我想这样展示:

或者这个: 为此:

如果查询中没有
页面
(http://knjiskicrv.comoj.com/index.php),我想展示:

查询中也没有
页面
(http://knjiskicrv.comoj.com/index.php?category=2),应该是这样的


希望有人能帮忙。谢谢。

事实上,你的问题有两个步骤。您首先需要了解什么是MVC中的“路由”。如果您有自己的类似MVC的框架实现,并且您不支持路由,那么这可能意味着您甚至不知道它以前是如何工作的。(悲伤但真实)

在MVC框架中,您使用路由器设置路由,路由器为您分析url,并说嘿,我找到了与您的请求匹配的url,请继续使用它

然后,您的控制器接收到一个路由到自身的请求,并在他认为合适的时候解析url。例如,使用explode(“/”、$\u SERVER['REQUEST\u URI']),然后读取url的不同部分以映射到预期的变量

所有这些都是非常理论化的,因为有无数种方法可以用定制的方式实现它。您唯一需要使用的是一个小小的mod_rewrite magic,将所有请求传递到index.php,这将路由所有内容。查看下面的url了解mod_rewrite,这是一个非常复杂的主题:

我通常会去,但我在家里无法访问它,是这样的:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^assets/
RewriteRule .* index.php
这将把所有流量重定向到index.php,然后您可以使用$\u SERVER['REQUEST\u URI']来分析请求。资产/文件夹中的所有内容都不会被触动并正常工作


请注意,我用帽子做了那个部分,它可能不起作用…

很好的技术答案,但“悲伤但真实”的部分不是很好。把注意力吸引到人们不太了解的地方是不礼貌的。网络讨论的第一条规则:友善!好的,对不起:)下次我会更小心的。我有一个函数
url()
,它围绕着我项目中的每个链接。所以我想这可能是很重要的一点,尽管这是我的第一个MVC。文件夹
资产
是什么?我想我最好问问自己:)通常,你把所有的图片、js、css、pdf、上传的文件等存储在一个文件夹中,这通常被称为资产