1

我做的一切都是对的。我的服务器启用了 mod_rewrite,我的虚拟主机路径将 AllowOverride 设置为 All,并且我有一个 .htaccess 文件,其重写规则与每个人都相同。但是我无法使用它们干净的 url 路径访问某些页面。因此,对于 90% 的页面,干净的 url 可以正常工作。但是对于那 10%,他们没有。

我检查了这些页面是否存在——确实存在。使用 index.php?q=[path] 检查它们是否可以访问——它们是。它们只能通过干净的 url 路径访问。

谁能帮我解开这个谜?

4

2 回答 2

1

因为您可以通过 q=path/to/menu/item 访问您的页面,所以很明显是 mod_rewrite 出了问题,而不是 Drupal。

要调试重写发生的情况,请在请求有问题的页面时打开重写日志并 tail -f 它,或者在 index.php 或 page.tpl.php 顶部的 print_r($_GET) 以查看实际要求的是什么。

如果您愿意在此处发布您可能敏感的 .htaccess,请这样做,我们可以为您查看是否有任何错误配置。

于 2010-06-17T20:23:03.000 回答
0

mod_rewrite有一些长期存在的错误会在通过过程中破坏 URL(您的问题 url 是否有任何转义字符?)。我不知道 Drupal 是否这样做,但在其他 PHP 应用程序中,一旦到达正确的入口点,我必须添加代码来重新进行重写。

不幸的是,Drupal 不能采用它的搜索路径PATH_INFO(就像许多其他应用程序一样),否则您可以使用mod_alias更简单、更可靠的方法。

于 2010-06-17T18:56:45.607 回答