Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

и снова редиректы...


Рекомендованные сообщения

49 минут назад, sonicking сказал:

1. 301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра
2. 301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе
3. 301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса
4. 301-ый редирект со страниц содержащих множественный “///” в конце/середине URL адреса на соответствующие страницы с “/” на конце/середине URL адреса

 

 

1

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

 

2 (лучше не делать - это отлично делает сео про. и ставит слеш там где он действительно нужен)

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

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

 

3 (также вопрос не верный. у вас не должно быть ссылок вида index.php в принципе, сделайте нормальные сео урлы)

RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]

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

 

4 идем к @****** в шпаргалку

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]

 

Ссылка на комментарий
Поделиться на других сайтах

@snastik наконец то сайт полностью перенесён с сервера на litespeed на сервер на apache

спасибо за Ваши советы. получилось следующее

1. 301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра

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

работает
2. 301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

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

500 Internal Server Error

3. 301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса

RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]

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

500 Internal Server Error

4. 301-ый редирект со страниц содержащих множественный “///” в конце/середине URL адреса на соответствующие страницы с “/” на конце/середине URL адреса

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]

работает

 

может неправильная последовательность редиректов? со всеми редиректами .htaccess выглядит так

Спойлер
# STARTNITRO
ExpiresActive On

#CSS JS XML TXT - 1 WEEK
<FilesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=604800, public"
ExpiresDefault "access plus 1 week"
</FilesMatch>

#JPG JPEG PNG GIF SWF SVG - 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf|svg|JPG|JPEG|PNG|GIF|SWF|SVG)$">
Header set Cache-Control "max-age=604800, public"
ExpiresDefault "access plus 1 week"
Header set Last-Modified "Wed, 05 Jun 2009 06:40:46 GMT"
</FilesMatch>

#OTF WOFF TTF ICO PDF FLV - 1 WEEK
<FilesMatch "\.(otf|ico|pdf|flv|woff|ttf)$">
Header set Cache-Control "max-age=604800, public"
ExpiresDefault "access plus 1 week"
</FilesMatch>
# ENDNITRO
# STARTCOMPRESSNITRO
RewriteEngine On
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(\/?((catalog)|(assets)).+)\.css$ assets/style.php?l=4&p=$1&c=604800 [NC,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(\/?((catalog)|(assets)).+)\.js$ assets/script.php?l=4&p=$1&c=604800 [NC,L]
AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE image/svg+xml
AddType application/x-font-woff .woff
AddOutputFilterByType DEFLATE application/x-font-woff
# ENDCOMPRESSNITRO
# 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|(?<!robots)\.txt))">
 Order deny,allow
 Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On

# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /

# Убираем повторяющиеся слеши (/) в URL

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]

# Выбор основного зеркала без www

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

# Добавляем слеш(/), если его нет, и это не файл.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

# Убираем index.php, если он есть в конце URL

RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]
RewriteRule ^(.*?)index\.php(/(.*?))?$ /$1$2 [L,R=301,NC,NE]

# Убираем слеши в конце URL для статических файлов (содержит точку)

RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

# Перенаправление на серии

RewriteCond %{REQUEST_URI} ^/brands/$
RewriteRule ^.*$ http://igra.toys/serii/? [R=301,L]

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
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)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### 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

 

надеюсь на Вашу помощь. заранее спасибо!

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


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

@snastik наконец то сайт полностью перенесён с сервера на litespeed на сервер на apache

спасибо за Ваши советы. получилось следующее

1. 301-ый серверный редирект со страниц содержащих www в начале URL адреса, на страницы без такового параметра

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

работает
2. 301-ый серверный редирект со страниц без “/” в конце URL-адреса, на страницы со “/” в конце URL-адресе

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$

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

500 Internal Server Error

3. 301-ый серверный редирект со всех страниц, содержащих index.php в конце URL-адреса (в том числе и /index.php) на соответствующие страницы без данного параметра в конце URL-адреса

RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]

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

500 Internal Server Error

4. 301-ый редирект со страниц содержащих множественный “///” в конце/середине URL адреса на соответствующие страницы с “/” на конце/середине URL адреса

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]

работает

 

может неправильная последовательность редиректов? со всеми редиректами .htaccess выглядит так

  Показать контент

# STARTNITRO
ExpiresActive On

#CSS JS XML TXT - 1 WEEK
<FilesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=604800, public"
ExpiresDefault "access plus 1 week"
</FilesMatch>

#JPG JPEG PNG GIF SWF SVG - 1 WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf|svg|JPG|JPEG|PNG|GIF|SWF|SVG)$">
Header set Cache-Control "max-age=604800, public"
ExpiresDefault "access plus 1 week"
Header set Last-Modified "Wed, 05 Jun 2009 06:40:46 GMT"
</FilesMatch>

#OTF WOFF TTF ICO PDF FLV - 1 WEEK
<FilesMatch "\.(otf|ico|pdf|flv|woff|ttf)$">
Header set Cache-Control "max-age=604800, public"
ExpiresDefault "access plus 1 week"
</FilesMatch>
# ENDNITRO
# STARTCOMPRESSNITRO
RewriteEngine On
RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(\/?((catalog)|(assets)).+)\.css$ assets/style.php?l=4&p=$1&c=604800 [NC,L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(\/?((catalog)|(assets)).+)\.js$ assets/script.php?l=4&p=$1&c=604800 [NC,L]
AddType image/svg+xml .svg
AddOutputFilterByType DEFLATE image/svg+xml
AddType application/x-font-woff .woff
AddOutputFilterByType DEFLATE application/x-font-woff
# ENDCOMPRESSNITRO
# 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|(?<!robots)\.txt))">
 Order deny,allow
 Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On

# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/

RewriteBase /

# Убираем повторяющиеся слеши (/) в URL

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]

# Выбор основного зеркала без www

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

# Добавляем слеш(/), если его нет, и это не файл.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

# Убираем index.php, если он есть в конце URL

RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]
RewriteRule ^(.*?)index\.php(/(.*?))?$ /$1$2 [L,R=301,NC,NE]

# Убираем слеши в конце URL для статических файлов (содержит точку)

RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

# Перенаправление на серии

RewriteCond %{REQUEST_URI} ^/brands/$
RewriteRule ^.*$ http://igra.toys/serii/? [R=301,L]

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
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)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### 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

 

надеюсь на Вашу помощь. заранее спасибо!

Погуглите что ли...
Этих инструкций как грязи.

Ссылка на комментарий
Поделиться на других сайтах

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

да уже гугл закончился и пол яндекса :grin:

попробую ещё. спасибо

выведите print_r($_SERVER) на любой странице магазина и посмотрите что там, возможно нет просто {THE_REQUEST} и надо поменять на {REQUEST_URI}

Ссылка на комментарий
Поделиться на других сайтах

31 минуту назад, spectre сказал:

выведите print_r($_SERVER) на любой странице магазина и посмотрите что там, возможно нет просто {THE_REQUEST} и надо поменять на {REQUEST_URI}

@spectre ээээ.... и тут я завис...

можно поподробнее для полных идиотов :grin:

спасибо

 

P.S. эти задачи вроде решил 

# Добавляем слеш(/), если его нет, и это не файл.

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..+$
RewriteRule ^(.*)$ $1/ [L,R=301]

 

# Убираем слеши в конце URL для статических файлов (содержит точку)

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

 

а эту задачу пока нет - всё что пробовал, вызывает циклический редирект

# Убираем index.php, если он есть в конце URL

Изменено пользователем sonicking
Ссылка на комментарий
Поделиться на других сайтах


Так надо почитать как работает mod_rewrite и понять что не так, куда уж подробнее) 

Ссылка на комментарий
Поделиться на других сайтах

@spectre

ну если правила

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/{2,} [NC]
RewriteRule ^(.*) $1 [R=301,L]

и

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

срабатывают, то, как я понимаю, обе директивы присутствуют

Ссылка на комментарий
Поделиться на других сайтах


  • 1 год спустя...

есть задача
нужно написать 301 редирект на урл для htaccess
https://site.com.ua/ua/stolovaya_posuda/servirovochnaja-posuda/stolovie-pribori/wilmax-wl-999106

меняло на

 

https://site.com.ua/ua/stolovaya_posuda-ua/servirovochnaja-posuda-ua/stolovie-pribori-ua/wilmax-wl-999106-ua/

 

основное условие - чтоб только если в урле присутствует /ua/

нужно чтоб для всех подобньых урлов шла подмена "/" на "-ua/"

слеш в конец урла необязотельно
єто уже есть....
возможно невозможно такое сделать регуляркой?

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.