Я размещаю сайт для клиента на своих виртуальных серверах, на которых в настоящее время работает Apache2. Я очень хочу переключиться на nginx
а также php5-fpm
, но у меня есть проблемы с преобразованием сайта .htaccess
файл правильно. (Я не создал сайт или .htaccess
Я, и, чтобы сделать вещи более интересными, он также переписывает URL.
Итак .htaccess
файл выглядит так:
RewriteEngine on
RewriteRule ^search.php(/|$) - [L,NC]
RewriteRule ^admin(/|$) - [L,NC]
RewriteRule ^blog/author/([^/\.]+)/? index.php?page=blog&filter=author&query=$1 [L,QSA]
RewriteRule ^blog/date/([^/\.]+)/([^/\.]+)/? index.php?page=blog&filter=date&year=$1&month=$2 [L,QSA]
RewriteRule ^blog/date/([^/\.]+)/? index.php?page=blog&filter=date&year=$1 [L,QSA]
RewriteRule ^blog/article/([^/\.]+)/? index.php?page=blog&newsId=$1 [L,QSA]
RewriteRule ^blog/([^/\.]+)/?$ index.php?page=blog&list=$1 [L,QSA]
RewriteRule ^blog/$ index.php?page=blog [L,QSA]
RewriteRule ^download/([^/\.]+) download.php?id=$1 [L]
RewriteRule ([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&sub=$2 [L,QSA]
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L,QSA]
Мне удалось получить сайт около работает в nginx
со следующим конфигом:
server {
listen 80;
server_name the-website-com;
# Tell Nginx and Passenger where your app's 'public' directory is
root /home/web;
index index.php;
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}
location /blog {
rewrite ^/blog/author/([^/\.]+)/? /index.php?page=blog&filter=author&query=$1 last;
rewrite ^/blog/date/([^/\.]+)/([^/\.]+)/? /index.php?page=blog&filter=date&year=$1&month=$2 last;
rewrite ^/blog/date/([^/\.]+)/? /index.php?page=blog&filter=date&year=$1 last;
rewrite ^/blog/article/([^/\.]+)/? /index.php?page=blog&newsId=$1 last;
rewrite ^/blog/([^/\.]+)/?$ /index.php?page=blog&list=$1 last;
}
location = /blog {
rewrite ^(.*)$ /index.php?page=blog last;
}
location /download {
rewrite ^/download/([^/\.]+) /download.php?id=$1 last;
}
location / {
rewrite ([^/\.]+)/([^/\.]+)/?$ /index.php?page=$1&sub=$2 last;
rewrite ^/([^/\.]+)/?$ /index.php?page=$1 last;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /opt/nginx/conf/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Это заставляет некоторые сайты работать. Например, /contact-us
хорошо, но по какой-то причине /our-approach
идет совершенно не так и пытается загрузить файл PHP вместо того, чтобы рендерить его.
Я парень из Rails и немного нуб, когда дело доходит до прокси в PHP nginx
, Любая помощь очень ценится!
Задача ещё не решена.
Других решений пока нет …