【问题标题】:Implement apache equivalent mod_rewrite functionality in lighttpd在 lighttpd 中实现 apache 等效的 mod_rewrite 功能
【发布时间】:2016-05-19 05:37:27
【问题描述】:

这是 mod_rewrite .htaccess 文件,它适用于我的网络应用程序的 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 个小时里,这个问题一直困扰着我,我有点想放弃这个问题。 谁能帮帮我?

P.S 我的 Lighttpd 服务器版本是 1.4.39

【问题讨论】:

    标签: apache .htaccess mod-rewrite server lighttpd


    【解决方案1】:

    好吧,我还是想通了。这适用于碰巧偶然发现此问题的任何人。 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"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多