Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Переадресация через htaccess


Recommended Posts

Помогите пожалуйста настроить переадресацию. Нужно, что бы с главной site.com работал редирект на site.com/category с этим мне получилось, а вот редирект с site.com/ru/ не работает на site.com/ru/category

Как правильно прописать в htaccess? 

Буду благодарен за помощь. 

 

Надіслати
Поділитися на інших сайтах


Спойлер

# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
#<FilesMatch "(?i)((\.tpl|\.ini|\.log|\.txt|(?<!robots)\.txt))">
# Order deny,allow
# Deny from all
#</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP_HOST} ^www.site.com.ua$ [NC]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://site.com.ua/$1 [R=301,L]
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^system/download/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^.*$ https://site.com.ua/category/? [R=301,L] - эта переадресация работает
RewriteRule ^ru/ /ru/category/$1 [R=301,L] - а вот эта нет

# Включаем кэш в браузерах посетителей
<ifModule mod_headers.c>
    # Все html и htm файлы будут храниться в кэше браузера один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    # Все css, javascript и текстовые файлы будут храниться в кэше браузера одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    # Все флэш файлы и изображения будут храниться в кэше браузера один месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    # Отключаем кеширование php и других служебных файлов
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>

<ifmodule mod_deflate.c>
    AddType application/x-font-woff .woff
    AddType image/svg+xml .svg
    AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript image/svg+xml application/x-font-woff
</ifmodule>

### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none
 

 

Надіслати
Поділитися на інших сайтах


Какая-то жуть.

Я думаю, вам лучше обратиться за помощью к тому, кто вписывал 20 раз вот это:

RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$

Это похоже на правило для автообновления сертификата, но я не понимаю какого чёрта оно вписано в условие каждого редиректа. И у вас что нет nginx на сервере? Сертификатом должен он заниматься.

 

 

А вообще, у вас по полной нарушены основные правила структуры правил редиректов в .htaccess для ОК. Должно быть так:

RewriteEngine On
RewriteBase /

# Любые редиректы

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

# Больше никаких редиректов

 

 

2 часа назад, Cornix сказал:

RewriteRule ^ru/ /ru/category/$1 [R=301,L] - а вот эта нет

Как вы думаете, что означает $1?

  • +1 1
Надіслати
Поділитися на інших сайтах


9 часов назад, Dotrox сказал:

Какая-то жуть.

Я думаю, вам лучше обратиться за помощью к тому, кто вписывал 20 раз вот это:


RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$

Это похоже на правило для автообновления сертификата, но я не понимаю какого чёрта оно вписано в условие каждого редиректа. И у вас что нет nginx на сервере? Сертификатом должен он заниматься.

Эти правила генерирует автоматически cPanel хостера, так как мои знания ограничены в этой области, мне сложно оценить на сколько все плохо и как должно быть. Я бы даже не обратил внимание на это, если бы не мои попытки настроить редирект.. nginx на сервере похоже что нету, я еще уточню сейчас в хостера, но вот ответ веб сервера:

Спойлер

HTTP/1.1 200 OK
Date:     Mon, 21 Aug 2017 07:32:15 GMT
Server:     Apache
X-Powered-By:     PHP/5.5.38
Expires:     Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:     no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma:     no-cache
Set-Cookie:     PHPSESSID=6742777968399406836ffcd715c55f24; path=/; HttpOnly
Set-Cookie:     language=uk; expires=Wed, 20-Sep-2017 07:32:15 GMT; Max-Age=2592000; path=/; domain=site.com.ua
Set-Cookie:     currency=UAH; expires=Wed, 20-Sep-2017 07:32:15 GMT; Max-Age=2592000; path=/; domain=site.com.ua
Set-Cookie:     currency=UAH; expires=Wed, 20-Sep-2017 07:32:15 GMT; Max-Age=2592000; path=/; domain=site.com.ua
Set-Cookie:     language=uk; expires=Wed, 20-Sep-2017 07:32:15 GMT; Max-Age=2592000; path=/; domain=site.com.ua
Content-Type:     text/html; charset=utf-8

 

9 часов назад, Dotrox сказал:

 

12 часов назад, Cornix сказал:

RewriteRule ^ru/ /ru/category/$1 [R=301,L] - а вот эта нет

Как вы думаете, что означает $1?

Чесно, понятия не имею, это то что я нагуглил в поисках решения поставленой задачи, в оригинале выглядело так:

Спойлер
В ряде случаев полезна переадресация через RewriteRule #

RewriteRule ^dir /dir-new/$1 [R=301,L]

Пробовал переделать под свои нужды.

 

13 минут назад, Otvet сказал:

и сайт в выгребную яму за такие редиректы без смены внутренней адресации

Имеете ввиду мои редиректы с главной на категорию? Прошу прощения, а что имеется ввиду под сменой внутренних адресов? И где это делать?

Надіслати
Поділитися на інших сайтах


4 часа назад, Cornix сказал:

nginx на сервере похоже что нету, я еще уточню сейчас в хостера, но вот ответ веб сервера:

Таки нету. Уходите от хостера, который не использует nginx!

А панель не должна ничего вам пихать в .htaccess.

 

4 часа назад, Cornix сказал:

Чесно, понятия не имею, это то что я нагуглил в поисках решения поставленой задачи, в оригинале выглядело так:

Похоже, автор того, что вы нагуглили тоже понятия не имел, что он пишет!

$1 - это переменная, в которую сохраняется часть ссылки выдранная регуляркой, но у вас ничего не выдирается и вообще вам ведь надо редирект просто на /ru/category. То есть, переменная там лишняя в любом случае.

 

Чтоб все редиректы работали и работали правильно, они должны быть вписаны по той структуре, которую я привёл выше. Но в вашем случае для начала нужно разобраться с хостером и правилами, которые дописывает панель.

 

  • +1 1
Надіслати
Поділитися на інших сайтах


3 часа назад, Dotrox сказал:

Таки нету. Уходите от хостера, который не использует nginx!

А панель не должна ничего вам пихать в .htaccess.

 

Похоже, автор того, что вы нагуглили тоже понятия не имел, что он пишет!

$1 - это переменная, в которую сохраняется часть ссылки выдранная регуляркой, но у вас ничего не выдирается и вообще вам ведь надо редирект просто на /ru/category. То есть, переменная там лишняя в любом случае.

 

Чтоб все редиректы работали и работали правильно, они должны быть вписаны по той структуре, которую я привёл выше. Но в вашем случае для начала нужно разобраться с хостером и правилами, которые дописывает панель.

 

Как сообщил хостер, через cPanel выдаеться бесплатный сертификат и что шаред хостинг у них так роботает, без nginx, что для роботы сайта совсем не обязательно nginx.

Надіслати
Поділитися на інших сайтах


3 минуты назад, Cornix сказал:

для роботы сайта совсем не обязательно nginx.

Точно так же, как вам зимой совсем не обязательно одевать носки, но разве с ними не лучше? :)

 

Если хостер не использует nginx - это значит, что их серверы обслуживают школьники, потому что nginx выгоден в первую очередь самому хостеру, он позволяет экономить серверные ресурсы.

 

6 минут назад, Cornix сказал:

через cPanel выдаеться бесплатный сертификат и что шаред хостинг у них так роботает

И у них нет квалификации настроить всё так, что не пихать ничего вам в .htaccess :-D

 

В общем, в вашем случае именно хостер должен разбираться с вашими редиректами, потому что неизвестно, что у них там накручено.

Надіслати
Поділитися на інших сайтах


2 минуты назад, Dotrox сказал:
11 минут назад, Cornix сказал:

для роботы сайта совсем не обязательно nginx.

Точно так же, как вам зимой совсем не обязательно одевать носки, но разве с ними не лучше? :)

 

Если хостер не использует nginx - это значит, что их серверы обслуживают школьники, потому что nginx выгоден в первую очередь самому хостеру, он позволяет экономить серверные ресурсы.

 

11 минут назад, Cornix сказал:

через cPanel выдаеться бесплатный сертификат и что шаред хостинг у них так роботает

И у них нет квалификации настроить всё так, что не пихать ничего вам в .htaccess :-D

 

В общем, в вашем случае именно хостер должен разбираться с вашими редиректами, потому что неизвестно, что у них там накручено.

Понял Вас, буду искать альтернативу своему хостингу тогда, хотя чесно говоря каких то претензий к текущему хостеру нету 

Надіслати
Поділитися на інших сайтах


10 часов назад, Cornix сказал:

Эти правила генерирует автоматически cPanel хостера

 

печаль...

первый раз такое встречаю.

 

.htaccess - это ваш и только ваш файл!  Как и файлы вашего магазина.  Никто кроме вас не должен в них ничего прописывать.

 

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.