在lighttpd中实现apache等效的mod_rewrite功能

时间:2016-02-09 09:44:18

标签: apache .htaccess mod-rewrite server lighttpd

这里是mod_rewrite .htaccess文件,该文件适用于我的web-app的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个小时里一直困扰着我,我有点想放弃这个问题。 有人可以帮帮我吗?

P.S我的Lighttpd服务器版本是1.4.39

1 个答案:

答案 0 :(得分:0)

好的,所以无论如何我都知道了。这适用于碰巧遇到此问题的任何人。默认情况下,lighttpd中的mod_rewrite在配置中被禁用,并且必须在开头的lighttpd.conf中取消注释

string sentence = tbSentence.Text;
string[] words = sentence.Split(' ');
foreach (string word in words) 
{
    if(subjectarray.Any(word.Contains) && verbarray.Any(word.Contains))
    {
        MessageBox.Show("Sentence Valid");
    }
}

同样适用于我的上述条件的正则表达式是

server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
"mod_simple_vhost",
"mod_setenv",
    #"mod_rewrite", //remove the hash here

)

此外,还应添加

  

$ HTTP [" host"] =〜" www.example.com"