Как перенести правила переадресации из .htaccess в php обработчик nginx?

Денис Косенко
На сайте с 15.05.2012
Offline
99
675

Как корректно перенести .htaccess в php обработчик nginx? Сам сайт использует 1С-Битрикс - CMS, но имеет множество новых модулей и переделанных функций. Почти все вышло перенести, кроме нескольких деталей. А именно:

Ссылка на новость должна иметь вид в URL https://smoservice.media/news/?ELEMENT_ID=764766 без index.php (сейчас он формируется автоматически и добавляется к ссылкам, например в обычном каталоге статей smoservice.media/blog/

Также не работает переключатель цвета темы на странице https://smoservice.media/telegram/ (и на странице товара), зато на всех остальных страницах функционирует прекрасно.

В системе стоит также многосайтовость от 1С-Битрикс, так что все эти правила должны работать и на других доменах (например https://smmbang.ru).

Options -Indexes  

ErrorDocument 404 /404.php


<IfModule mod_php7.c>
php_flag session.use_trans_sid off
#php_flag default_charset UTF-8
#php_value display_errors 1
</IfModule>

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

#RewriteMap access txt:/var/www/smoservice/data/www/moonlight.smoservice.media/blacklist_.txt
#RewriteCond ${access:%{REMOTE_ADDR}} deny [NC]
#RewriteRule ^ - [L,F]


#RewriteRule ^pages/([a-z0-9_]+)\.php$ /pages/$1/ [R=301]

#RewriteRule /upload/iblock/fe4/fe4e297043821e32102ef5e25c1ab40f\.jpg /assets/img/social-icons/a-facebook.png

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

RewriteCond %{THE_REQUEST} //
RewriteRule ^.*$ https://smoservice.media/$0 [R=302,L,NE]

RewriteRule ^fast/index\.php$ /fast [R=301,L]
RewriteRule ^fast/index\.php/$ /fast [R=301,L]

RewriteRule ^index\.php$ / [R=301,L]
RewriteRule ^(.*)/index\.php$ /$1/ [R=301,L]

RewriteRule ^catalog/([a-z0-9_\-]+)/?$ /$1/ [R=301,L]


# RewriteRule ^fast/?$ /fast/item.php [NC,L,QSA]

# RewriteRule webfonts/(.*)$ https://smoservice.media/assets/vendors/font-awesome/webfonts/$1 [NC,L,QSA]
# RewriteRule ^img/(.*)$ https://smoservice.media/assets/img/$1 [NC,L,QSA]


RewriteRule ^fast/([a-z]+)/?$ /fast/item.php?type=$1 [NC,L,QSA]

RewriteRule ^fast/([a-z]+)/([a-z\-_]+)/?$ /fast/item.php?type=$1&sub=$2 [NC,L,QSA]


RewriteRule ^subscriptions/([a-z]+)/?$ /subscriptions/service.php?type=$1 [L,QSA]

RewriteCond %{QUERY_STRING} ^type=(\w+)$
RewriteRule ^fast/$ /fast/%1/? [L,R=301,QSD]


RewriteCond %{REQUEST_FILENAME}.php -f


RewriteRule ^pages/([a-z0-9_\-]+)/?$ /pages/$1.php [NC,L,QSA]


RewriteCond %{HTTP_HOST} ^www\.smoservice\.media$ [NC]
RewriteRule (.*) https://smoservice.media/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^moonlight\.smoservice\.media$ [NC]
RewriteRule (.*) https://smoservice.media/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]



</IfModule>

<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_headers.c>
Header set X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options nosniff
</IfModule>

<IfModule mod_mime.c>
AddType font/opentype .otf
AddType application/x-font-woff .woff
AddType application/x-font-woff2 .woff2
AddType application/x-font-ttf .ttf
AddType application/vnd.ms-fontobject .eot
AddType image/svg+xml .svg
</IfModule>


<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
ExpiresByType image/png "access plus 3 day"
ExpiresByType text/css "access plus 3 day"
ExpiresByType application/javascript "access plus 3 day"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType application/x-font-woff2 "access plus 1 year"
</IfModule>


<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

Вопрос. Что нужно добавить, чтобы в первую очередь решить проблему с добавлением index.php к внутренним ссылкам элементов + их дальнейшего редиректа на страницу с "/" при открытии пользователем в браузере.

Продвижение в соцсетях и мессенджерах при поддержке https://ros.media Telegram, ВКонтакте, Одноклассники, iTunes, TikTok, ASKfm, Мой Мир, Google Plus, App Store и Google Play. Автоматизированный SMM-сервис https://smoservice.media для вашего успеха!
Metal Messiah
На сайте с 01.08.2010
Offline
152
#1

1. Есть пачка онлайн сервисов для конвертации htaccess в nginx, в разной степени кривые но если подправить руками - все будет работать.

2. Есть такая панель VestaCP, если ставить ее в режиме nginx + php-fpm, там в шаблонах есть конфиги чуть ли не под каждую CMS, на Битрикс тоже должны быть. Советую в репозиториях посмотреть либо поставить себе на свободную виртуалку.

anonymous, думай что говоришь и не забывай подписать отзыв :)
Денис Косенко
На сайте с 15.05.2012
Offline
99
#2
Metal_Messiah:
1. Есть пачка онлайн сервисов для конвертации htaccess в nginx, в разной степени кривые но если подправить руками - все будет работать.

2. Есть такая панель VestaCP, если ставить ее в режиме nginx + php-fpm, там в шаблонах есть конфиги чуть ли не под каждую CMS, на Битрикс тоже должны быть. Советую в репозиториях посмотреть либо поставить себе на свободную виртуалку.

У нас ISP Manager, а не VestaCP.

suffix
На сайте с 26.08.2010
Offline
325
#3

Вот честно скажу - раз много модулей и переделанных функций - проще вернуть Apache.

Связка nginx+apache если нет нехватки ресурсов ничем не хуже nginx+php-fpm.

Клуб любителей хрюш (https://www.babai.ru)

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