1

我有 ubuntu 14.04,我有一个带有 hhvm 和 apache2 的 wordpress 博客。

这是我的 apache2 站点配置:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/myblog

        ServerName my.blog.com

        ErrorLog ${APACHE_LOG_DIR}/myblog/error.log
        CustomLog ${APACHE_LOG_DIR}/myblog/access.log combined
        ProxyPassMatch ^/(.*.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/myblog/$1
</VirtualHost>

此配置会将所有 .php 请求重定向到我的 hhvm 服务器,其他文件(静态)将从 DocumentRoot 提供。

如何启用 wordpress 永久链接?这是 wordpress .htaccess 建议的:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

任何想法?谢谢

4

2 回答 2

0

This can be resolved with:

    DocumentRoot /var/www/myblog
    ProxyPassMatch ^/(.*.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/myblog/$1
    ProxyPassMatch ^(?!\/wp\-admin\/)([^\.]+)$ fcgi://127.0.0.1:9000/var/www/myblog/index.php

The first rule will serve the assets (images, css, etc)

The second rule match all .php requests (for no permalinks, like wp-admin/ urls, etc) with the correct .php file (using hhvm)

The third rule will match with all requests with no extension (aka permalink) (image.jpg, file.css, etc) (using hhvm)

Note: you will exclude all other no-extension files that you want in the ProxyPassMatch, or put all them in other subdirectory and exclude it.

于 2014-04-20T11:25:38.747 回答
0

有一个类似的问题,我在我的 nginx conf 中添加了这个,以使其适用于带有 hhvm 3.21 的 wordpress clean permalink url(在 url 中没有 /index.php/)

location / {
...
    rewrite ^/([^\.]+)$ /index.php/$1 break;
...
}

确保您使用的是 fastcgi 而不是服务器版本(在服务器版本中,由于重写,您可能会获得太多重定向)

  • 经过测试
  • 质量检查通过
于 2017-11-21T14:57:44.703 回答