重写后将 index.php 隐藏在子目录中(lighttpd)

重写后将 index.php 隐藏在子目录中(lighttpd)

现在如何设置

我有一个使用 apache mod_rewrite 设置清理 URL 的网站,如下所示:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L,QSA]

该网站还使用了一个名为 Cockpit 的内容管理系统,它位于我的公共目录下,并带有类似的 .htaccess 文件,用于其干净的 URL:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

在两种情况下RewriteEngine On也都存在(当然)。

现在在 apache 上,这会导致我的网站的 URL 被重写如下

http://domain.com/a
http://domain.bom/b

并且驾驶舱网址实际上具有相同的功能:

http://domain.com/cockpit/a
http://domain.com/cockpit/b

我正在研究什么 因此,我一直在考虑放弃 apache 而使用 lighttpd,并且对其 mod_rewrite 语法和配置进行了大量调整,但我发现一个问题,即驾驶舱网址并不完全干净。这是我在 lighttpd 上进行设置的方式:

$HTTP["host"] == "domain.com" {
        server.document-root = "/var/www/domain.com/public_html"
        index-file.names = ( "index.php" )
        $HTTP["url"] =~ "^(\/cockpit)(\/[a-zA-Z0-9\.]*)*$" {
                url.rewrite-if-not-file = ( "^(.*)$" => "/cockpit/" )
        } else $HTTP["url"] !~ "^(\/cockpit)(\/[a-zA-Z0-9\.]*)*$" {
                url.rewrite-if-not-file = ( "^(.*)$" => "/index.php" )
        }
}

此配置设置有效,但驾驶舱网址现在是这样的:

http://domain.com/cockpit/index.php/a
http://domain.com/cockpit/index.php/b

我想像index.phpapache 那样去掉 URL 的一部分,但我无法让它正常工作。

有人对此事有什么想法吗? s

相关内容