我想使用lighttpd的mod_rewrite來允許沒有特定文件擴展名的請求。例如,我想要以下映射自動工作:用lighttpd重寫 - 如何刪除文件擴展名
- 請求「/ index」將服務「/index.php」。
- 「/目錄/文件」=> 「/dir/file.php」
- 「/目錄/文件?ARGS」=> /dir/file.php?args」
可這是輕鬆地與一個給定擴展的單一重寫規則進行(例如 「.PHP」)?
我想使用lighttpd的mod_rewrite來允許沒有特定文件擴展名的請求。例如,我想要以下映射自動工作:用lighttpd重寫 - 如何刪除文件擴展名
可這是輕鬆地與一個給定擴展的單一重寫規則進行(例如 「.PHP」)?
是
^(。*)。PHP $ 1 [L,R,NC,QSA]
那將用於目錄中的.htaccess
^/(。*)。PHP http://same.site/ 1 $ [L,R,NC,QSA]
在您的域名是 'same.site',因爲它需要重定向的URL改變(而不是代理)
無需測試,但你可以給它一個鏡頭:
url.rewrite-once = (
"^([^?]*)(\?.*)?$" => "$1.php$2",
)
基本上就意味着
問號和一切,你把它改寫爲第一部分,包括.php
並重新添加的最後一部分。
再次:我還沒有測試過它。
不會造成這樣的根目錄(「/」 )被重寫爲「/.php」? – user102008 2011-03-22 00:04:58
cassie's answer above恰到好處。我會建議刪除尾隨逗號,並使用url-rewrite-if-not-file(自1.4.x lighttpd後可用)。這可以讓您提供存在於同一目錄中的其他文件,而無需重寫它們。
url.rewrite-if-not-file = ("^([^?]*)(\?.*)?$" => "$1.php$2")
不會導致根目錄(「/」)被重寫爲「/.php」,因爲它不是文件? – user102008 2011-03-17 04:48:22
卡西和natbro得到這個非常接近正確的,但作爲user102008評論說,這錯誤地重寫任何目錄索引。添加一個url.rewrite - 一次匹配任何以'/'結尾的東西似乎使它工作。
url.rewrite-once = ( "^(.*)/$" => "$1/")
url.rewrite-if-not-file = ("^([^?]*)(\?.*)?$" => "$1.php$2")
但是如何重定向缺少尾部斜槓的目錄名? – 2012-04-07 01:56:43
這似乎是使用Apache的mod_rewrite的正確方法。但是,我正在尋找lighttpd的解決方案。 – ssn 2009-11-23 23:10:08
錯了,對不起,我以爲模式和語法都是一樣的 我只涉足與lighttpd的 http://forum.lighttpd.net/topic/504 – GeeKieR 2009-11-24 06:14:21