这是 mod_rewrite .htaccess 文件,用于我的 Web 应用的 Apache 服务器
RewriteEngine On
RewriteBase /cs200/tokens/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
这些是一些可能有用的相关 $_SERVER 参数。
$_SERVER["REQUEST_URI"]- /cs200/tokens/
$_SERVER["DOCUMENT_ROOT"]- /var/www/servers/www
$_SERVER["SCRIPT_FILENAME"]- /var/www/servers/www/cs200/tokens/index.php
$_SERVER["PHP_SELF"] - /cs200/tokens/index.php
我有一个 lighttpd 服务器,我想在其中实现与此 .htaccess 文件相同的功能。我参考了很多在线资源并想出了这些方法。但它们实际上都不起作用。假设我的域名是 www.example.com。我尝试了以下示例,但这些都不起作用
$HTTP["host"] =~ "www.example.com" {
url.rewrite-once = (
"^/cs200/tokens(.*)" => "/index.php"
)
}
示例 2
$HTTP["host"] =~ "www.example.com" {
url.rewrite-once = (
"^/cs200/tokens/(.*)" => "/cs200/tokens/index.php"
)
}
这些似乎都无法实现 lighttpd 上这个 apache .htaccess 文件的功能。这个问题已经困扰了我 12 个小时,我有点想放弃这个问题了。有人能帮我吗?
PS我的Lighttpd服务器版本是1.4.39
答案1
好吧,不管怎样,我还是搞明白了。这适用于任何碰巧遇到此问题的人。lighttpd 中的 mod_rewrite 在配置中默认处于禁用状态,必须在开始时在 lighttpd.conf 中取消注释
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_simple_vhost",
"mod_setenv",
#"mod_rewrite", //remove the hash here
)
对我而言,上述条件的正则表达式也是这样的
url.rewrite-once = (
"^/cs200/tokens(.*)" => "/cs200/tokens/index.php"
还应添加以下内容
$HTTP["host"] =~ "www.example.com"