我想使用lighttpd的mod_rewrite来允许没有特定文件扩展名的请求。例如,我希望以下映射能够自动运行:
对于给定的扩展名(例如“.php”),可以使用单个重写规则轻松完成吗?
答案 0 :(得分:3)
Cassy和natbro得到的这几乎是正确的,但正如user102008评论的那样,这会错误地重写任何目录索引。添加url.rewrite-once匹配任何以'/'结尾的东西似乎使它工作。
url.rewrite-once = ( "^(.*)/$" => "$1/" )
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
答案 1 :(得分:1)
未经测试,但你可以试一试:
url.rewrite-once = (
"^([^?]*)(\?.*)?$" => "$1.php$2",
)
基本上意味着
然后将其重写为第一部分,包括.php
并再次添加最后一部分。
再说一遍:我还没有测试过它。
答案 2 :(得分:0)
cassie's answer above恰到好处。我建议删除尾随的逗号并使用url-rewrite-if-not-file(自1.4.x lighttpd以来可用)。这使您可以提供存在于同一目录中的其他文件,而不会被重写。
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
答案 3 :(得分:-1)
是
^(。*)。php $ 1 [L,R,NC,QSA]
将用于目录中的.htaccess
^ /(。*)。php http://same.site/ $ 1 [L,R,NC,QSA]
你的域名是'same.site',因为它需要重定向才能更改URL(而不是代理)