【发布时间】:2016-04-17 15:52:39
【问题描述】:
我的 htaccess 中有这段代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^(.+)$ index.php/?url=$1 [QSA,L]
在 PHP 中,我获取当前 url 请求并将其作为控制器,因此如果有 http://example.com/index.php?url=about -> 这将给我 about 控制器,以便显示 about 页面 (MVC)
现在我的问题是如何从每个页面中删除 index.php?url。例如,我想访问 about 页面,那么我需要它是 -> http://example.com/about
您可以在 htaccess 中看到我正在用我输入的任何内容 ($1) 替换 index.php/?url 但它似乎不起作用,因为当我请求此 url 时:(示例)http://example.com/about 我得到找不到对象!错误 404。当我有 http://example.com 时,我得到了 controller_home 页面。但是,当我输入 http://example.com/home 时,它也会显示错误 404。
如果我这样做:http://example.com/?url=about 或 http://example.com/index.php?url=about 它可以找到并为我提供 about 控制器,因此我猜 htaccess 不会删除 ?url...
这可能是我的 php 代码中的另一个错误还是什么?
请帮助我,因为我已经检查了这个错误大约 10 个小时,但我没有找到它为什么会这样,我的朋友有几乎相同的代码,它对他非常有效。
我是 php 的新手,所以它可能是简单的错误... 提前感谢所有提供帮助的人!
【问题讨论】:
-
首先验证您的
.htaccess是否已启用,方法是在您的.htaccess顶部放置相同的垃圾(随机)文本,然后查看它是否在您运行时生成500(内部服务器)错误在浏览器中访问您的页面? -
是的,我以前做过,现在试过了,效果很好。顺便说一句,这是我的根的样子:gyazo.com/7678d71f467f2a14cd54b565354112de
-
在规则
RewriteRule ^(.+)$ /index.php/?url=$1 [QSA,L]中的 index.php 之前添加一个斜杠,以确保索引文件取自根目录。 -
我也这样做了 :) 但是,它没有用。
标签: php apache .htaccess model-view-controller web