Перевод htaccess под nginx

  • Автор темы eMASTER
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.
E

eMASTER

Прохожие
В общем сам htaccess
Код:
AddDefaultCharset UTF-8
DirectoryIndex index.php

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

<FilesMatch "^cron.php$">
Order allow,deny
Deny from all
</FilesMatch>

Это конфиг nginx
Код:
location / {
    root   /var/www/proxy;
    index  index.php;
		
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php last;
    }
}

Не работает редирект - "The page isn't redirecting properly"
У кого-нибудь есть идеи?
 
Если не ошибаюсь, там нужно добавить $query_string

Код:
if (!-e $request_filename) {
  rewrite  ^(.*)$  /index.php?$query_string   last;
}
 
break еще раньше пробовал, тоже не работает
 
Странно. Должно работать.
Разве что можно поробовать вот так

Код:
if (!-e $request_filename) {
  rewrite  ^/(.*)$  /index.php?$query_string   break;
}

Со слешами у меня помню были с ним замомрочки.


Ещё в простых случаях сам разработчик рекомендует использовать такую комбинацию

Код:
    location / {
        error_page  404  = /index.php?$query_string;
        log_not_found   off;
    }
т.к. она быстрее выполняется чем реврайт

Также возможно не стоит передавать ему $query_string

Кроме этого посмотри в исходник скрипта. Может он тащит инфу о запросе из глобального массива $_SERVER
если да, проверь
описан ли этот элемент в fastcgi_params

вот такое содержимое в нём у меня

Код:
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
fastcgi_param X_HTTP_IF_MODIFIED_SINCE $HTTP_IF_MODIFIED_SINCE;
fastcgi_param  REDIRECT_STATUS    200;
 
Пишу в этой теме, чтобы новых не плодить.

Не могу понять, как записать в конфиг nginx:

Код:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index.php$ / [R=301]
 
Опиши пожалуйста на словах, как работает это правило
просто я по памяти не помню, а в доках апатча сейчас нет времени искать
 
тогда должно быть вот так
Код:
rewrite  ^/index\.php$  /   permanent;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху