我做的一切都很对。我的服务器启用了mod_rewrite,我的虚拟主机路径将AllowOverride设置为All,并且我有.htaccess文件,其重写规则与所有人一样。但我无法使用干净的url路径访问某些页面。因此,对于90%的页面,干净的URL工作正常。但对于那10%,他们没有。
我已经检查过这些页面是否存在 - 他们确实存在。检查它们是否可以使用index.php访问?q = [路径] - 它们是。它们只能通过干净的URL路径进入。
任何人都可以帮我解开这个谜团吗?
答案 0 :(得分:1)
因为您可以通过q = path / to / menu / item访问您的页面,所以很明显是mod_rewrite是错误的而不是Drupal。
要调试重写的内容,请在请求有问题的页面时打开rewrite log并尾随-f,或者在index.php或页面顶部打印print_r($ _ GET) .tpl.php查看实际请求的内容。
如果您愿意在此处发布可能敏感的.htaccess,请执行此操作,我们可以查看是否存在任何配置错误。
答案 1 :(得分:0)
mod_rewrite
有一些长期存在的错误,在途中会破坏网址(您的问题网址是否有任何转义字符?)。我不知道Drupal是否这样做,但在其他PHP应用程序中,我必须添加代码以在达到正确的入口点后重新进行重写。
不幸的是,Drupal无法在PATH_INFO
中使用其搜索路径(正如许多其他应用程序所做的那样),否则您可以使用更简单且更可靠的mod_alias
。