apache / nginx: .htaccess переписать преобразование хаос - PullRequest
0 голосов
/ 09 мая 2011

Я пытаюсь переписать правило .htaccess из Apache для использования на сервере Nginx.

RewriteCond $1 !^(index\.php|assets)
RewriteRule ^(.*)$ /index.php/$1 [L]

Вот то, что у меня есть, это что-то вроде работы, но было бы очень полезно какое-то лучшее направление. Я могу нажать на индекс, и он нормально загружается и нормально просматривает папку ресурсов, но более глубокие ссылки не работают (PHP-программа извлекает переменные из URL для построения запросов к базе данных). Я знаю, что я близок .. спасибо за любые ответы.

location / {
  index index.php;
}
location /$ {
  rewrite ^/(.*)$ /index.php/$1 last;
}
location /index.php {
  root html;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
  include fastcgi_params;
}

1 Ответ

0 голосов
/ 09 мая 2011

Я думаю, что эти правила отправят все, что не находится в / assets, в /index.php.Я думаю, что это будет делать то, что вы хотите.Кроме того, он перемещает директивы root и index на сервер, где они должны быть установлены по умолчанию для всех расположений.

# set server defaults directly in server context
root /usr/share/nginx/html;
index index.php;

# location / is a fallback for any request that doesn't match
# a more specific location
location / {
  rewrite ^ /index.php$uri last;
}

# Serve content under /assets from disk
location /assets {
}

# Extract path info and send /index.php for processing
location /index.php {
  fastcgi_split_path_info ^(/index.php)(.*)
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  fastcgi_pass 127.0.0.1:9000;
}
...