@Romashenko

Nginx Rewrite не работает, как решить?

Здравствуйте. Имеется скрипт на php в корне лежит файл .htaccess и в папке /router лежит файл .htaccess

Тот что лежит в корне:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ router/ [L]
    RewriteRule (.*) router/$1 [L]
</IfModule>

Тот что в директории /router:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php [L]
</IfModule>

Конфиг nginx default:
serve<code></code>r {
	listen 80 default_server;
	listen [::]:80 default_server;
	
	root /home/vadosiq/server/public_html;
	index index.php index.phtml index.html index.htm;
	server_name _;
	location / {
		rewrite ^$ router/ break;
		rewrite ^(.*)$ router/$1 break;
		try_files $uri $uri = 404;
	}

	location /router {
		if (!-e $request_filename) {
			 rewrite ^router/(.*)$ router/index.php break;
		 } 
	}
	
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
	}	
	
	location ~ /\.ht {
		deny  all;
	}
}

Пробовал различные онлайн конвертеры, ничего не помогло. Подскажите, что делаю не так?
  • Вопрос задан
  • 1211 просмотров
Пригласить эксперта
Ответы на вопрос 1
kotomyava
@kotomyava
Системный администратор
Лучше понять, как конфигурировать, прочитать документацию, понять, что надо сделать, и написать конфиг, а не пользоваться бездумно конвертерами...

Эквивалент вашим .htaccess, будет выглядеть как-то так:
location = / {    
  rewrite ^$ router/;
}
location / {
    rewrite ^(.*)$ router/$1 break;
}
location /router {
   try_files $uri $uri/ /router/index.php;
}


Ну и нужен вам, вероятно, не default конфиг nginx править, а создать конфиг для вашего домена отдельный. А default пусть заглушкой отвечает, при не попадании в домен, как это по умолчанию и сделано...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы