Apache 将htaccess转换为lighttpd

Apache 将htaccess转换为lighttpd,apache,.htaccess,mod-rewrite,url-rewriting,lighttpd,Apache,.htaccess,Mod Rewrite,Url Rewriting,Lighttpd,我的测试环境是Apache,我有一个.htaccess文件,其中包含一些简单的重写URL规则,为了使其生效,我们的live服务器使用lighttpd,我们希望将规则转换为为为lighttpd编写的规则 这些要求适用于某些URL,如: http://www2.mydomain.com/content/myfile.docs?param1=val1¶m2=val2 我希望将其映射/重写为: http://www2.mydomain.com/content/index.php?file_nam

我的测试环境是Apache,我有一个.htaccess文件,其中包含一些简单的重写URL规则,为了使其生效,我们的live服务器使用lighttpd,我们希望将规则转换为为为lighttpd编写的规则

这些要求适用于某些URL,如:
http://www2.mydomain.com/content/myfile.docs?param1=val1¶m2=val2
我希望将其映射/重写为:
http://www2.mydomain.com/content/index.php?file_name=myfile.docs¶m1=val1¶m2=val2

注意:域名是动态的,因此我希望它适用于不同的域名[如
wwww2.mydomain.com
cdn.domainname.com
等]

注意:我的htaccess重写规则是:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?vanity_name=$1 [L,QSA]
我已经检查了几个主题[像这一个]http://redmine.lighttpd.net/boards/2/topics/5465],但无法使其工作, 我确保在我的服务器上启用了重写模块,下面是我使用的“lighttpd”文件内容:

server.error-handler-404 = "/index.php" 

url.rewrite-once = (
"^(.*)\~s(\?,*)$" => "/index.php?file_name=$1"
)

你试过什么吗?您需要证明自己至少有一点努力来解决这个问题,包括到目前为止您所编写的代码是否有效。如果您发布您的进度以及为什么它不起作用,我们可以提供帮助。但是,发布您的需求并期望它为您编写并不是这里的工作方式。抱歉,如果我没有提到我为解决此问题所做的努力,我不知道这很重要。我已经修改了问题描述,希望这能有所帮助。谢谢你指出这一点。你的正则表达式乱七八糟,比如,
\~s
,应该匹配什么?你用过类似的东西吗?您需要匹配文件名之前的所有内容:
(.*)
,然后是文件名,而不是问号
/([^?]*)
,最后是查询字符串:
?(.*)
。然后将其转换为
$1/index.php?file_name=$2和$3
,但如果根本没有查询字符串,也不会正常工作。