Jump to content
  • 0

дубли страниц


rus
 Share

Question

чет туплю, перепробовал множество способов, а редиректа так и не происходит, нужно перекидывать с:

http://www.site.ru/catalog/brend/bla/index.php?PAGEN_1=3

на:

http://www.site.ru/catalog/brend/bla/?PAGEN_1=3

пробовал как-то так:


RewriteEngine On
RewriteCond %{QUERY_STRING} ^PAGEN_1=3$
RewriteRule ^index\.php http://www.site.ru/catalog/brend/bla/?PAGEN_1=3 [L,R=301]

но увы, не прокатывает...

Link to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 0

На вход RewriteRule приходит полный путь начиная с директории где располагается файл .htaccess с правилом.

То есть если адрес http://www.site.ru/catalog/brend/bla/index.php?PAGEN_1=3 и файл .htaccess находится в корневой директории сайта, то на вход попадет "catalog/brend/bla/index.php"

Отсюда делаю вывод что правило должно быть примерно такое:


RewriteEngine On
RewriteCond %{QUERY_STRING} ^PAGEN_1=3$
RewriteRule ^catalog/brend/bla/index.php$ /catalog/brend/bla/?PAGEN_1=3 [L,R=301]

Хотя все зависит от того где находится .htaccess и что указано в RewriteBase.

А вообще хорошая статья на хабре есть про то как работает RewriteRule:

http://habrahabr.ru/company/sprinthost/blog/129560/

Edited by wwt
Link to comment
Share on other sites

  • 0

да, htaccess в корне, но переадресации так и не происходит.

дополню, что: /catalog/brend/bla/ - это преобразование, з них физически только каталог и бренд, а бла- преобразование в чпу

и да, физически в директории bla индекс.пхп тоже нету, так как и самой директории нету, может из-за этого не происходит переадресации?

вот к примеру решение проблемы с дублем для основного адреса:


RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.php$ / [R=301]

работает четко, переадресовывает.

Link to comment
Share on other sites

  • 0

Возможно проблема в последовательности правил. на каждое последующее RewriteRule поступает результат работы предыдущего RewriteRule тоесть нужно смотреть что поступает именно в это правило. Это нужно видеть все правила чтоб понять где что происходит и как меняется строка в каждом правиле.Если есть возможность выложи всю последовательность правил посмотрим, где там что меняется и найдем проблему.

Edited by wwt
Link to comment
Share on other sites

  • 0

да, собсно это стандартный набор битрикса, тут не много их:


Options -Indexes
ErrorDocument 404 /404.php

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

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

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
</IfModule>

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index\.php$ / [R=301]

#AuthName "My Intranet"
#AuthType SSPI
#SSPIAuth On
#SSPIPackage NTLM
#SSPIDomain MYDOMAIN
#SSPIPerRequestAuth On
#SSPIAuthoritative On
#SSPIOfferBasic On
#Require valid-user

Link to comment
Share on other sites

  • 0

Подозреваю после вот этого правила:


RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

дальше уже строка имеет вид /bitrix/urlrewrite.php. ЧПУ в битрикс разбираются средствами php, а все запросы просто пересылаются этому файлу который уже отдает данные в зависимости от адреса.

Свои правила нужно добовлять до правила выше, пока входной адрес еще актуален:


<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]

RewriteCond %{QUERY_STRING} ^PAGEN_1=3$
RewriteRule ^catalog/brend/bla/index.php$ /catalog/brend/bla/?PAGEN_1=3 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
</IfModule>

Теоретически вот так должно заработать.

  • Like 2
Link to comment
Share on other sites

  • 0

спасибо! заработало!

теперь касательно динамики:

ни так:


RewriteCond %{QUERY_STRING} ^PAGEN_1=(.*)$
RewriteRule ^catalog/brend/marhatter/index.php$ /catalog/brend/marhatter/?PAGEN_1=$1 [L,R=301]

ни так:


RewriteCond %{QUERY_STRING} ^PAGEN_1=(.*)$
RewriteRule ^catalog/brend/marhatter/index.php$ /catalog/brend/marhatter/?PAGEN_1=$ [L,R=301]

не работает..., должно подставлять любое число.

Link to comment
Share on other sites

  • 0

Так ($ - переменные из Rule, % - переменные из Cond):


RewriteCond %{QUERY_STRING} ^PAGEN_1=(.*)$
RewriteRule ^catalog/brend/marhatter/index.php$ /catalog/brend/marhatter/?PAGEN_1=%1 [L,R=301]

Или юзаем флаг QSA:


RewriteCond %{QUERY_STRING} ^PAGEN_1=.*$
RewriteRule ^catalog/brend/marhatter/index.php$ /catalog/brend/marhatter/ [QSA,L,R=301]

Edited by wwt
  • Like 1
Link to comment
Share on other sites

  • 0

Помогите, пожалуйста, мне тоже по этому же вопросу.

Сейчас в htaccess:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/readers/ [L,R=301]

Проблема в том, что на конечной странице остаётся в адресе ID=16 (http://www.сайт.ru/auto_id/readers/?ID=16). На отображение страницы это никак не влияет, но я боюсь, что скажется на поисковом продвижении.

Link to comment
Share on other sites

  • 0

Помогите, пожалуйста, мне тоже по этому же вопросу.

Сейчас в htaccess:


RewriteCond %{QUERY_STRING} ^ID=16
RewriteRule ^catalog/index.php$ /auto_id/readers/ [L,R=301]

Проблема в том, что на конечной странице остаётся в адресе ID=16 (http://www.сайт.ru/a.../readers/?ID=16). На отображение страницы это никак не влияет, но я боюсь, что скажется на поисковом продвижении.

ответил в вашей теме.

Link to comment
Share on other sites

  • 0

есть такая проблема генерируются дубли главной страницы

такого плана

www.dveri-kd.ru/index.php/catalog/catalog/catalog/catalog/catalog/about/news/nadi.swf

www.dveri-kd.ru/index.php/about/news/about/news/about/news/catalog.php

www.dveri-kd.ru/index/?interface=show&module=Prod&node_id=858

www.dveri-kd.ru/index.php/catalog/catalog/

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

.htaccess такой

Options -Indexes

ErrorDocument 404 /404.php

php_value auto_prepend_file "/home/bitrix/www/bitrix/modules/security/tools/start.php"

php_flag allow_call_time_pass_reference on

#php_flag allow_call_time_pass_reference 1

#php_flag session.use_trans_sid off

php_value display_errors 0

php_value mbstring.func_overload 0

php_value mbstring.internal_encoding windows-1251

php_value realpath_cache_size 4096k

<IfModule mod_rewrite.c>

Options +Indexes

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{HTTP_HOST} !^$

RewriteCond %{HTTP_HOST} !^www\. [NC]

RewriteCond %{HTTP_HOST} (.+)$

RewriteRule ^(.*)$ http://www.dveri-kd.ru/$1'>http://www.dveri-kd.ru/$1 [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/

RewriteRule ^index\.php$ http://www.dveri-kd.ru/ [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]

</IfModule>

<IfModule mod_mime.c>

AddType application/x-httpd-php .ico

</IfModule>

<IfModule mod_dir.c>

DirectoryIndex index.php index.html

</IfModule>

<IfModule mod_expires.c>

ExpiresActive on

ExpiresByType image/jpeg "access plus 3 day"

ExpiresByType image/gif "access plus 3 day"

</IfModule>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy