现在如何设置
我有一个使用 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