0

我正在开发一个基本博客,并尝试创建一种方法来编辑已创建的条目。我知道在编辑视图(管理页面)中呈现条目的代码通过在 url 中手动传递必要的 GET 变量来工作,例如"localhost/simple_blog/admin.php?page=blog&url=first-entry". 这会毫无问题地从数据库中提取所有字段。

不过,我有一个执行重写的 .htaccess 文件:

RewriteEngine On
RewriteBase /simple_blog/

RewriteRule \.(gif|jpg|png|css|js|inc\.php)$ - [L]
RewriteRule ^admin/(\w+)(|/)$ admin.php?page=$1 [NC,L]
RewriteRule ^admin/(\w+)/([\w-]+) admin.php?page=$1&url=$2 [NC,L]
RewriteRule ^(\w+)/?$ index.php?page=$1
RewriteRule ^(\w+)/([\w-]+) index.php?page=$1&url=$2

编辑条目的链接格式为"/simple_blog/admin/blog/first-entry",将鼠标悬停在页面上的超链接上会显示"localhost/simple_blog/admin/blog/first-entry"正确的引用。但是,单击链接并查看加载页面上的源代码表明没有从前一页接收到任何值。

我只是希望有更多 mod_rewrite 和 RegEx 经验的人可以和我一起看看这个,也许会指出我遗漏的一些东西,或者确认问题不在于我的重写规则并且肯定在其他地方。我已经三重检查了我的函数,我在 Apache 中没有收到任何错误,访问日志仅显示 GET 正在访问“第一个条目”。

如果这个问题是一个骗局,请随时让我知道并指出我正确的方向。如果您觉得需要更多信息/代码示例,也请告诉我。:)

(是的,我正在使用 Jason Lengstorf 的“PHP for Absolute Beginners”;我现在在第 7 章。)


编辑:2013 年 8 月 1 日

我已经在http://htaccess.madewithlove.be/上测试了我的规则,似乎我测试它的几乎所有 url 都只匹配最终规则,因此只会将“index.php”发回给我。我已经使用“PHP for Absolute Beginners”一书和外部资源检查了我的语法。一切似乎都在检查。任何人都知道它为什么这样做?

这是重写测试结果的屏幕截图。 截屏

4

1 回答 1

0

即使您声明了 a RewriteBase,也不能将其从规则的模式匹配方面排除。许多在线测试人员不支持RewriteBase. 试试这个,看看它是否有效。

RewriteEngine On
RewriteBase /simple_blog/

RewriteRule \.(gif|jpg|png|css|js|inc\.php)$ - [L]
RewriteRule ^simple_blog/admin/([\w-]+)/?$ admin.php?page=$1 [NC,L]
RewriteRule ^simple_blog/admin/([\w-]+)/([\w-]+) admin.php?page=$1&url=$2 [NC,L]
RewriteRule ^simple_blog/([\w-]+)/([\w-]+) index.php?page=$1&url=$2 [L]
RewriteRule ^simple_blog/([\w-]+)/?$ index.php?page=$1 [L]
于 2013-08-01T17:36:00.053 回答