LINUX.ORG.RU
решено ФорумAdmin

Redirect на Sub URI при обращении к /

 ,


1

1

Есть nginx раздающий Friendic'у. Поскольку это nginx на моём уютном локалхосте обслуживает эта Friendica одного единственного человека, меня. Поэтому мне не интересна умолчальная страница френдики, пусть лучше сразу направляет на мой профиль. То есть надо чтобы человек набравший в адресной строке camelsplace.ru отправлялся на camelsplace.ru/profile/camel. При обращении по какому-то другому адресу, например camelsplace.ru/community, перенаправлять не должно. Как это правильно сделать?

Если уж вопрос этот считается среди специалистов тривиальным, то прошу ограничиться не только банальным RTFM, но ответить на вопрос «man что?»

Ниже конфиг nginx'а.

★★★★★

/etc/nginx/sites-available/camelsplace

server {
	listen 443 ssl;
	server_name camelsplace.ru;

	include proxy.include;

	#Тут вырезал всякие опции SSL

	index index.php;
	charset utf-8;
	root /var/www/friendica;
	access_log /var/log/nginx/friendica.log;

	# rewrite to front controller as default rule
	location / {
	rewrite ^/(.+) /index.php?q=$uri&$args last;
	}

	# make sure webfinger and other well known services aren't blocked
	# by denying dot files and rewrite request to the front controller
	location ^~ /.well-known/ {
	allow all;
	rewrite ^/(.*) /index.php?q=$uri&$args last;
	}

	# statically serve these file types when possible
	# otherwise fall back to front controller
	# allow browser to cache them
	# added .htm for advanced source code editor library
	location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|ttf|woff|svg)$ {
	expires 30d;
	try_files $uri /index.php?q=$uri&$args;
	}

	# block these file types
	location ~* \.(tpl|md|tgz|log|out)$ {
	deny all;
	}

	# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	# or a unix socket
	location ~* \.php$ {
	# Zero-day exploit defense.
	# http://forum.nginx.org/read.php?2,88845,page=3
	# Won't work properly (404 error) if the file is not stored on this
	# server, which is entirely possible with php-fpm/php-fcgi.
	# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on
	# another machine. And then cross your fingers that you won't get hacked.
	try_files $uri =404;
	# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	fastcgi_split_path_info ^(.+\.php)(/.+)$;
	# With php5-cgi alone:
	# fastcgi_pass 127.0.0.1:9000;
	# With php5-fpm:
	fastcgi_pass unix:/var/run/php5-fpm.sock;
	include fastcgi_params;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	}
	# deny access to all dot files
	location ~ /\. {
	deny all;
	}
}
Camel ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Что-то не то

у тебя это уже делает строка

Может я плохо объяснил, но этот кусок делает не то что я хочу. При обращении к camelsplace.ru показывает страницу аутентификации если не авторизован, и какую-то ещё страницу если не авторизован. А я хочу чтобы показывало то же что и на camelsplace.ru/profile/camel или перенаправляло туда.

Camel ★★★★★
() автор топика

Наверное, что-то в таком стиле тебе нужно:

server {
    rewrite ^/$ /profile/camel permanent;
}

// Хотя, через if будет правильней. В таком варианте будет перенаправлять и для ссылок типа «/?lor».

d2
()
Последнее исправление: d2 (всего исправлений: 1)
Ответ на: комментарий от d2

Работает

server {
    rewrite ^/$ /profile/camel permanent;
}

Спасибо, это то что нужно.

// Хотя, через if будет правильней. В таком варианте будет перенаправлять и для ссылок типа «/?lor».

Поясните, пожалуйста, что это значит?

Camel ★★★★★
() автор топика
Ответ на: Работает от Camel

С таким rewrite будут следующие перенаправления:

1. / -> /profile/camel

2. /?site=lor&debug=true -> /profile/camel?site=lor&debug=true

Если во втором случае редирект не нужен, то придётся использовать if вместо/вместе с rewrite.

d2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.