![重写后将 index.php 隐藏在子目录中(lighttpd)](https://linux22.com/image/675334/%E9%87%8D%E5%86%99%E5%90%8E%E5%B0%86%20index.php%20%E9%9A%90%E8%97%8F%E5%9C%A8%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%EF%BC%88lighttpd%EF%BC%89.png)
现在如何设置
我有一个使用 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.php
apache 那样去掉 URL 的一部分,但我无法让它正常工作。
有人对此事有什么想法吗? s