Вот файл 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"
)
}
Похоже, что ни один из них не выполняет функции этого файла apache .htaccess на lighttpd. Эта проблема беспокоит меня последние 12 часов, и я как бы хочу отказаться от этой проблемы. Кто-нибудь может мне помочь, пожалуйста!
P.S моя версия Lighttpd Server - 1.4.39
Хорошо, я все равно понял это. Это для всех, кто случайно наткнется на эту проблему. mod_rewrite в lighttpd по умолчанию отключен в конфигурации и должен быть раскомментирован в 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 ["хост"] = ~ "www.example.com"