【问题标题】:Why won't this Apache modrewrite RewriteRule work?为什么这个 Apache modrewrite RewriteRule 不起作用?
【发布时间】:2010-03-13 20:00:15
【问题描述】:

我正在尝试让 Apache mod rewrite 在我的本地机器上工作。我正在使用 PHP 5 运行 OSX,并且启用了 Apache mod rewrite 模块。

我有一个名为 localhost/~Jason/hfh/admin 的目录,其中包含基于 $_GET 变量调用的各种 PHP。我想让用户输入(理论上)

localhost/~Jason/hfh/admin/pages 

并将该 URL 保留在地址栏中,而显示的是

localhost/~Jason/hfh/admin/?admin=pages

所以。

我创建了一个位于 /hfh 目录中的 .htaccess 文件。在里面,我放了这个 mod rewrite 文本:

RewriteEngine On
RewriteRule ^admin/([^/.]+)/?$ admin/?admin=$1 [L]

当我进入浏览器并输入时

localhost/~Jason/hfh/admin/pages

我收到“加载页面问题”错误,Firefox 说:“糟糕。Firefox 出于某种原因无法加载此页面。”

谁能帮我解决这个问题?我很难用正则表达式和 mod 重写...

【问题讨论】:

  • 如果 mod_rewrite 发生故障,那么错误日志中应该有一些内容 - 可能在 /var/log/apache2/error_log 中(或者至少在我的 Mac 上是这样)。
  • 是的,这是错误日志中的一行:[Sun Nov 29 20:46:29 2009] [error] [client ::1] 文件不存在:/Users/Jason/Sites/hfh /admin/pages

标签: apache mod-rewrite


【解决方案1】:

尝试在 RewriteRule 中明确编写 index.php。

RewriteRule ^admin/([^/.]+)/?$ admin/index.php?admin=$1 [L]

您可能还会发现,只需将此指令移动到 /admin/ 本身的 .htaccess 文件中,这样组织起来会更简洁,从而消除了规则中的重复项,并使以后更容易找到该规则。

【讨论】:

  • 我添加了 index.php(虽然你不应该这样做,对吧?)但仍然没有任何变化。如果它可以工作,我很乐意将规则移到 /admin/ 中,但我想先让它工作!
  • 我有时在里面有 RewriteBase,这没什么区别。我有: RewriteBase localhost/~Jason/hfh/
  • @Jason Rhodes:基础就是/~Jason/hfh/
  • 谢谢。然而,那个基地并没有让它发挥作用。仍然处于完全亏损状态。
【解决方案2】:

到目前为止,答案似乎是:您不能在 localhost 上使用 mod-rewrite。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2012-12-30
    • 2011-01-07
    相关资源
    最近更新 更多