Поскольку большинство проектов с открытым исходным кодом включают правила mod_rewrite для работы с Apache, мне нужно иметь возможность преобразовать их для работы с lighttpd или nginx. Какой веб-сервер позволяет мне точно преобразовывать правила в эквивалентные из Apache? Если оба могут быть преобразованы, какой именно из них имеет лучший синтаксис и расширенные параметры, которые лучше имитируют Apache?
Например, я использую .htaccess из Wordpress.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
nginX кажется правильным решением, если вы пытаетесь сохранить правила перезаписи.
Это можно было сделать так:
if (!-e $request_filename) {
rewrite ^([_0-9a-zA-Z-]+)?(/.*) $2 break;
rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
rewrite ^ /index.php last;
}
Но похоже, что сила nginX в том, чтобы иметь менее сложные правила меньшего размера, поэтому это может быть лучшим способом заменить это:
if (!-e $request_filename) {
rewrite ^ /index.php last;
}
Просто чтобы дать полный ответ для следующих посетителей, lighttpd поддерживает правила перезаписи, хотя они не поддерживают напрямую эквивалент тегов -f и -d, чтобы сначала проверить наличие файла и каталога с тем же именем.
На данный момент существует три решения:
Поместите свои статические файлы в фиксированный каталог, например medias, и сделайте исключение для этого каталога, например:
$HTTP["host"] == "yoursite" {
# all other config here ...
alias.url = (
"/medias" => "/var/www/yoursite/public/medias"
)
url.rewrite-once = (
"^/medias/(.*)" => "$0",
"^/(.*)$" => "/index.php/$1",
"^/$" => "/index.php",
)
}
Может быть, заглянуть на веб-сервер "Чероки". Это легкая, быстрая альтернатива Apache и имеет несколько довольно приятных функций.
Независимо от того, какой из «легких» веб-серверов быстрее (и все они намного быстрее, чем apache). Я скажу это для Cherokee, веб-интерфейс администратора очень прост в работе. Очевидно, что, поскольку он основан на веб-интерфейсе, конфигурация сильно отличается от apache. Я бы назвал это приятным, а не раздражающим.
но в конце концов ..., только Apache - это Apache. Сильная сторона Apache - его гибкость на уровне AAA.