我正在尝试使用教训,Shaun Inman 开发的 URL 缩短器,在我的 lighttpd 服务器上,他使用 .htaccess 文件进行重定向。首先,我对 Mod_Rewrite 不是很在行,否则只需进行一些简单的谷歌搜索就足以将其转换为 lighttpd。事实上,我不知道 Mod_Rewrite 的第 2 行和第 3 行在做什么,所以我无法转换。我很感激任何人对此的建议,以便我可以让它正常工作。谢谢!
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php?token=$1 [QSA,L]
</IfModule>
答案1
这两行指示 Apache 的 mod_rewrite 不要将重写规则应用于文件系统上物理存在的文件(f)和目录(d):
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
长期以来,lighttpd 并不支持这种开箱即用的行为,您必须使用带有 lua 脚本的 mod_magnet,如以下示例所示:
不过,现在似乎有支持:
http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModRewrite#urlrewrite-repeat-if-not-file
因此,只需在 lighttpd.conf 中使用重写构造,例如:
url.rewrite-if-not-file = (
"^/(.*)$" => "/index.php?q=$1"
)
希望这会有所帮助并祝你好运!