Lighttpd 上 Anchor CMS 的重写规则

Lighttpd 上 Anchor CMS 的重写规则

我在运行 Lighttpd 的服务器上安装了 Anchor CMS,并尝试设置漂亮的 URL。我将 Anchor 安装在子目录“/blog”中。

apache中与anchor cms配合使用的htaccess文件是:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /blog

    # Checks to see if the user is attempting to access a valid file,
    # such as an image or css document, if this isn't true it sends the
    # request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule>

这是我在 lighttpd 中的重写规则:

url.rewrite-if-not-file += ( "^/blog/(.*)$" => "/blog/index.php/$1")        

现在 URL 很漂亮,但静态内容(即 css、javascript 和图片)都无法加载。我以为使用url.rewrite-if-not-file可以解决这个问题,但似乎对我的安装不起作用。http://redmine.lighttpd.net/projects/1/wiki/Docs_ModRewrite#urlrewrite-repeat-if-not-file

以下 URL 和其文件需要保留完整:

  • /blog/themes/default/{ js | css | img }
  • /blog/anchor/views/assets/{ js | css | img }

主题目录可以根据当前使用的主题而变化。因此,可以使用“示例”而不是“默认”。我不太擅长使用正则表达式,所以我真的需要一些帮助。我在想类似这样的方法可能会奏效:

url.rewrite-once += ("^/blog/themes/(.*.)/(css|js|img)/(.*)" => "$0")

任何帮助都将不胜感激。Lighttpd 使用与 perl 类似的正则表达式

答案1

我使用以下重写规则实现了这个功能:

url.rewrite-if-not-file += ( "^/(.*)\.(css|js|jpg|png|gif)$" => "$0",
                             "^/blog/(.*)$" => "/blog/index.php/$1" )

我希望这可以帮助其他人在 lighttpd 上运行 anchor cms

相关内容