Назад | Перейти на главную страницу

.ht доступ к правилам nginx

Я читал множество тем здесь и на других форумах сообщества, также пробовал использовать htaccess для генераторов nginx, но меня это поразило.

Это мой .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !(/$|\.) 
    RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . index.php [L]
</IfModule>

А вот моя конфигурация nginx:

location / {
  rewrite ^(.*)$ /$request_uri/ redirect;
  if (!-e $request_filename){
    rewrite ^(.*)$ /index.php break;
  }
}

Когда я запускаю свой скрипт, меня зацикливают

http://127.0.0.1////////////////////video/tkOVwe1x49C8wgi////////////////////

Будем рады получить любую помощь по этому поводу!

Конвертируя свой первый RewriteRule:

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

вы полностью игнорируете условие: не переписывайте то, что уже заканчивается на / или содержащие . (какую бы цель могло иметь второе условие). Вы можете переписать его, используя location блок:

location ~ ^[^\.]*[^\./]$ {
    # No leading '/' like in the Apache rule
    return 301 $uri/;
    # rewrite (.*) $uri/ permanent;
    # has the same effect
}

Как уже было отмечено Womble и Ричард, второе условие следует преобразовать с помощью try_files.

В целом ваши правила перезаписи должны быть:

location ~ ^[^\.]*[^\./]$ {
    return 301 $uri/;
}

location / {
    try_files $uri $uri/ index.php;
}