使用lighttpd重写-如何删除文件扩展名
我想使用lighttpd的mod_rewrite来允许没有特定文件扩展名的请求。例如,我希望以下映射自动工作:使用lighttpd重写-如何删除文件扩展名,http,lighttpd,Http,Lighttpd,我想使用lighttpd的mod_rewrite来允许没有特定文件扩展名的请求。例如,我希望以下映射自动工作: 请求“/index”将提供“/index.php” “/dir/file”=>“/dir/file.php” “/dir/file?args”=>/dir/file.php?args” 对于给定的扩展名(例如“.php”),使用一个重写规则是否可以轻松完成此操作?是 ^(.*)菲律宾比索$1[L、R、NC、QSA] 这将用于目录中的.htaccess ^/(.*)菲律宾比索$1[L
- 请求“/index”将提供“/index.php”
- “/dir/file”=>“/dir/file.php”
- “/dir/file?args”=>/dir/file.php?args”
您的域是“相同的.site”,因为它需要重定向才能更改URL(而不是代理)而无需对其进行测试,但您可以尝试一下:
url.rewrite-once = (
"^([^?]*)(\?.*)?$" => "$1.php$2",
)
基本上是指
- 除了问号,什么都可以
- 并且,如果存在,请使用问号和后面的所有内容
.php
并再次添加最后一部分
再次声明:我还没有测试过它。基本正确。我建议删除后面的逗号并使用(从1.4.x lighttpd开始提供)。这样,您就可以为同一目录中存在的其他文件提供服务,而无需重写它们
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
Cassy和natbro的观点几乎正确,但正如user102008所评论的那样,这会错误地重写任何目录索引。添加url.rewrite(一次匹配以“/”结尾的任何内容)似乎可以让它正常工作
url.rewrite-once = ( "^(.*)/$" => "$1/" )
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
这似乎是使用Apache的mod_rewrite的正确方法。但是,我正在寻找lighttpd的解决方案。呃,对不起,我认为模式和语法是相同的,我只是涉猎了lighttpd。这不会导致根目录(“/”)被重写为“/.php”,因为它不是一个文件吗?这不会导致根目录(“/”)吗要重写为“/.php”?但重定向缺少尾部斜杠的目录名又如何呢?