6

我有这样的链接——http://example.com/index.php?q=about我想让它们看起来像这样——http://example.com/about

目前我正在使用重写规则

VirtualHost {
  * {
    Pattern = .*
    RewriteRules {
      dirindex {
        pattern = (.*)/$
        to = index.php/$1
        qsa = true
      }
    }
  }
}

如果我访问http://example.com/about我会得到一个404 File Not Found

我正在为 Drupal 做这个。干净网址指南:https ://drupal.org/getting-started/clean-urls

4

1 回答 1

1

这个问题可以使用 VirtualHost 来解决,但是 HHVM 的服务器模块现在已经被贬值了,我们鼓励你使用 fastcgi 而不是 apache/nginx。我将为 VirtualHost 提供答案,但如果需要,可以使用 nginx 替代品进行更新。

首先,确保您的 SourceRoot 是正确的:

Server {
  Port = 9000
  SourceRoot = /home/myuser/www
  DefaultDocument = index.php
}

现在,对于规则,这应该可能起作用:

VirtualHost {
  * {
    Pattern = .*
    RewriteRules {
      * {
        pattern = (.*)$
        to = index.php/$1
        qsa = true
      }
    }
  }
}

如果您希望查询完全按照您的预期工作,请将内部模式替换为:

* {
pattern = /(.*)
to = index.php?q=$1
qsa = true
}

我已经测试了这两个,并且它们运行良好。如果您仍然面临问题,则问题可能与您的设置有关。确保启用错误和访问日志记录

于 2014-02-22T04:08:25.997 回答