Я читал множество тем здесь и на других форумах сообщества, также пробовал использовать 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;
}