我在运行 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