【问题标题】:Drupal Clean Urls break randomly for arbitrary pathsDrupal Clean Urls 随机中断任意路径
【发布时间】:2010-06-17 18:47:30
【问题描述】:

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

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

谁能帮我解开这个谜团?

【问题讨论】:

    标签: apache drupal clean-urls


    【解决方案1】:

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

    要调试你的重写发生了什么,请在请求有问题的页面时打开rewrite log 和 tail -f 它,或者在 index.php 或 page.tpl 的顶部打印_r($_GET) .php 查看实际请求的内容。

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

    【讨论】:

    • 好的,我做了 print_r($_GET)。这是我看到的: Array ( [q] => error/HTTP_NOT_FOUND.html.var ) 警告:无法修改标头信息 - 标头已由(输出开始于 X:\Dropboxen\Home\My Dropbox\Sites\drupal\ index.php:4) 在 X:\Dropboxen\Home\My Dropbox\Sites\drupal\includes\bootstrap.inc 1369 行
    【解决方案2】:

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

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

    【讨论】:

    • 我不这么认为。这是路径之一,例如:node/add/product。就像他们来的一样简单。
    • 我的意思是你的 url 被重写(mod_rewrite)到 index.php?q=node/add/product 使用查询字符串中的路径,而不是 index.php/node/add/product 使用路径作为路径。
    猜你喜欢
    • 2013-10-22
    • 2014-06-13
    • 1970-01-01
    • 2015-01-07
    • 2018-06-22
    • 2021-01-09
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    相关资源
    最近更新 更多