Назад | Перейти на главную страницу

Скрыть index.php в подкаталоге после перезаписи (lighttpd)

Как это устроено сейчас

У меня есть веб-сайт, который настроен для чистых URL-адресов с помощью apache mod_rewrite следующим образом:

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

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

На сайте также используется CMS под названием 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

и URL-адреса кабины делают практически то же самое:

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

Что я ищу Итак, я искал, чтобы оставить apache для lighttpd, и я немного возился с их синтаксисом и конфигурацией mod_rewrite, но я столкнулся с проблемой, когда URL-адреса кабины не совсем чистые. Вот как я его настроил на 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" )
        }
}

Эта конфигурация работает, но теперь URL-адреса кабины следующие:

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

Я бы хотел избавиться от index.php часть URL-адреса, такая как apache, но я не смог заставить ее работать должным образом.

Есть какие-нибудь идеи по этому поводу? s