Dot-Htaccess
在 lighttpd 中實現 apache 等效的 mod_rewrite 功能
這是 mod_rewrite .htaccess 文件,它適用於我的 web 應用程序的 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 個小時裡,這個問題一直困擾著我,我有點想放棄這個問題。誰能幫幫我嗎?
PS 我的 Lighttpd 伺服器版本是 1.4.39
好的,所以我還是想通了。這適用於任何偶然發現此問題的人。lighttpd 中的 mod_rewrite 預設情況下在配置中禁用,並且必須在開頭的 lighttpd.conf 中取消註釋
server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", "mod_simple_vhost", "mod_setenv", #"mod_rewrite", //remove the hash here )
對我有用的上述條件的正則表達式也是這個
url.rewrite-once = ( "^/cs200/tokens(.*)" => "/cs200/tokens/index.php"
這也應該添加到
$HTTP
$$ “host” $$=〜“www.example.com”