nginx bitrix редирект index.php

baas
На сайте с 17.09.2012
Offline
162
6170

Добрый вечер.

Подскажите пожалуйста как реализовать редирект для всех index.php файлов на nginx.

Пытаюсь сделать редирект всех index.php файлов на урлы без них.

Пример.

site.ru/about/index.php на site.ru/about/

Вроде как должен этот редирект это делать, но что то я не допониманию в нем, помогите разобраться.

location = /index.php {

if ($request_uri = /index.php) {
rewrite ^(.*)$ / redirect;
}
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

В таком варианте конфига, работает только основной site.ru/index.php редирект на site.ru.

виртуал хост nginx.

root@site:~ # cat /usr/local/etc/nginx/sites-enabled/site.ru

server {
listen 5.5.5.5:80;
root /usr/local/www/default;
}

server {
listen 5.5.5.5:80;
server_name www.site.ru;
return 301 http://site.ru$request_uri;
}

server {
listen 5.5.5.5:80;
open_file_cache max=20000 inactive=20s;
open_file_cache_valid 360s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
server_name site.ru;
access_log /mnt/backup/log/nginx/access_site.log;
root /usr/local/www/site.ru;
index index.html index.php;

if (!-e $request_filename) {
rewrite ^(.*)$ /bitrix/urlrewrite.php last;
}

location = /index.php {
if ($request_uri = /index.php) {
rewrite ^(.*)$ / redirect;
}
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

if ($bad_method = 1) { return 444; }

if ($bad_bot = 1) { return 403; }

if ($bad_referer = 1) { return 403; }

location / {
root /usr/local/www/site.ru;
index index.php;
error_page 404 = /404.php;
}

location ~ \.php$ {
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/site.ru/$fastcgi_script_name;
include fastcgi_params;
if (!-f $request_filename) {
rewrite ^(.*)$ /404.php last;
}
}

location ^~ /bitrix/admin/ {
index index.php;
auth_basic "closed site";
auth_basic_user_file /usr/local/.htpasswd;
location ~ \.php$ {
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_ignore_client_abort off;
}
}

location /pma/ {
alias /usr/local/www/phpMyAdmin/;
index index.php;
auth_basic "closed site";
auth_basic_user_file /usr/local/.htpasswd;
location ~ \.php$ {
fastcgi_pass unix:/tmp/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_ignore_client_abort off;
fastcgi_param PHP_ADMIN_VALUE "mbstring.func_overload=0";
}
}

location ~* \.(swf|zip|rar|arj|cab|exe|dll|ico|jpg|jpeg|gif|bmp|png|mp3|avi|mov|mpg|mpeg|txt|amr|mmf|wml|wbmp|mid|midi|3gp|js|css|htm|html?)$ {
expires 30d;
charset utf-8;
source_charset utf-8;
}

location ~ (/\.ht|/bitrix/modules|/upload/support/not_image|/bitrix/php_interface) {
deny all;
}

location ~ /.svn/ {
deny all;
}

location ~ /\.ht {
deny all;
}
}

# nginx -v

nginx version: nginx/1.8.0

# uname -rms

FreeBSD 10.2-RELEASE-p7 amd64
Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
Хелпзонович
На сайте с 15.06.2005
Offline
133
#1

Как-то так


server {
index index.php
...............



if ($request_uri ~* "^(.*/)index\.php$") {
return 301 $1;
}

location / {

# ...
}
}
Вы там держитесь! Хорошего вам настроения. Здоровья.
baas
На сайте с 17.09.2012
Offline
162
#2
Хелпзонович:
Как-то так

server {
index index.php
...............



if ($request_uri ~* "^(.*/)index\.php$") {
return 301 $1;
}

location / {

# ...
}
}

Спасибо, работает.

D.iK.iJ
На сайте с 26.05.2013
Offline
225
#3

А .htaccess не подойдет?

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)(.*)\ HTTP/

RewriteRule ^index.(php|html|htm)/?(.*)$ http://%{HTTP_HOST}/ [R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (.*)/index\.(php|html|htm)(.*)\ HTTP/

RewriteRule ^(.*)/index.php/?(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Адаптивный дизайн в 2 строчки ( https://dikij.com/wm/adaptaciya-saytov.php ). + Принимаю заказы любой сложности ( https://searchengines.guru/ru/forum/926323 ). 💎 Еще я делаю классные кулоны с опалами ( https://mosaicopal.ru/ ).
baas
На сайте с 17.09.2012
Offline
162
#4
DiKiJ:
А .htaccess не подойдет?

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)(.*)\ HTTP/
RewriteRule ^index.(php|html|htm)/?(.*)$ http://%{HTTP_HOST}/ [R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (.*)/index\.(php|html|htm)(.*)\ HTTP/
RewriteRule ^(.*)/index.php/?(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

nginx используется.

baas
На сайте с 17.09.2012
Offline
162
#5

Добрый вечер.

Возникла этим редиректом проблема.

if ($request_uri ~* "^(.*/)index\.php$") {
return 301 $1;
}

Подскажите пожалуйста как мне к ниму сделать исключения?

Исключения на запрос http://domen.ru/personal/order/make/

То-есть, если выполняется запрос http://domen.ru/personal/order/make/, то этот редирпкт не делать.

не как не могу понять, как такое исключения сделать?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий