Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

проблемы mod_rewrite

00 голосов
5
подскажите как реализовать:
site.ru/katalogi
site.ru/katalogi/
www.site.ru/katalogi
www.site.ru/katalogi/
Чтоб вели на одну и туже страницу (www.site.ru/katalogi/).
таких страниц очень много , как сделать массив редиректа ?

спасибо.
спросил 01 Дек, 13 от Drul4ik (100 баллов)

5 Ответы

00 голосов
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]
ответил 28 Янв, 14 от Niola (360 баллов)
00 голосов
Требуется настроить 301 редирект со страниц:
_site.ru/katalogi
_site.ru/katalogi/
_www.site.ru/katalogi

на _www.site.ru/katalogi/

.htaccess
Код
<IfModule mod_rewrite.c> 
  Options +FollowSymLinks 
  RewriteEngine On 
  # редирект host.ru -> www.host.ru 
  RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
  # редирект /news/123 -> /news/123/ 
  RewriteCond %{REQUEST_URI} ^(.*/[^/\.]+)$ 
  RewriteRule ^(.*)$ http://%{HTTP_HOST}/$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] 
</IfModule> 

urlrewrite.php
Код
<?
$arUrlRewrite = array(
   array(
      "CONDITION"   =>   "#^/catalog/([a-zA-Z0-9_]+)(/*)(.*)?#",
      "RULE"   =>   "SECTION_CODE=$1",
      "ID"   =>   "",
      "PATH"   =>   "/catalog/list.php",
   ),
   array(
      "CONDITION"   =>   "#^/types_of_printing/([\\w\\d_]+)(/)?#",
      "RULE"   =>   "code=$1",
      "ID"   =>   "",
      "PATH"   =>   "/types_of_printing/detail.php",
   ),
   array(
      "CONDITION"   =>   "#^/(.*)/(.*)?#",
      "RULE"   =>   "ELEMENT_CODE=$1",
      "ID"   =>   "",
      "PATH"   =>   "/catalog/detail.php",
   ),
   array(
      "CONDITION"   =>   "#^/products/([\\w\\d]+)(/)?#",
      "RULE"   =>   "code=$1",
      "ID"   =>   "",
      "PATH"   =>   "/products/detail.php",
   ),
   array(
      "CONDITION"   =>   "#^/e-store/books/reviews/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:news",
      "PATH"   =>   "/e-store/books/reviews/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/communication/forum/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:forum",
      "PATH"   =>   "/communication/forum/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/e-store/xml_catalog/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:catalog",
      "PATH"   =>   "/e-store/xml_catalog/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/communication/blog/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:blog",
      "PATH"   =>   "/communication/blog/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/service/(.*)/(.*)?#",
      "RULE"   =>   "ELEMENT_CODE=$1",
      "ID"   =>   "",
      "PATH"   =>   "/service/detail.php",
   ),
   array(
      "CONDITION"   =>   "#^/content/articles/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:news",
      "PATH"   =>   "/content/articles/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/content/gallery/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:photogallery_user",
      "PATH"   =>   "/content/gallery/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/personal/lists/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:lists",
      "PATH"   =>   "/personal/lists/index.php",
   ),
   array(
 &
ответил 16 Май, 14 от wystrek (100 баллов)
00 голосов
доволе сложный комплекс преобразований... прям так с третьего прочтения и не поймеш шо происходит :)

описанная задача в первых строках
Цитата

Требуется настроить 301 редирект со страниц:
_site.ru/katalogi
_site.ru/katalogi/
_www.site.ru/katalogi

на _www.site.ru/katalogi/

решена предыдущим постом


Смысл в дальнейших хитростях не понятен, а следственно и решение.

запись
Цитата
Код
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

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


универсальна, нужно только site.ru поменять на ваш
ну и добавить " подключение ЧПУ битрикса "

Файл urlrewrite.php формируется автоматом, если есть надобность вручную править его то нужно вникать зачем, а потом давать советы как подправить
ответил 13 Сен, 14 от Niola (360 баллов)
00 голосов
Чють разгреб,
# редирект /news/123 -> /news/123/ у вас не полный, попробуйте дополнить из примера.
ответил 18 Янв, 15 от Niola (360 баллов)
00 голосов
ваше решение работает , но де доставляет www в запросе _site.ru/katalogi ( / доставляет)
ответил 04 Май, 15 от wystrek (100 баллов)

Похожие вопросы

0 голосов
0 ответов
спросил 21 Март, 14 от Fatalshin (260 баллов)
0 голосов
1 ответ
спросил 19 Июнь, 17 от аноним
0 голосов
2 ответов
спросил 06 Май, 14 от xDEV1Lx (240 баллов)
0 голосов
2 ответов
спросил 02 Май, 14 от PuTop (100 баллов)
0 голосов
2 ответов
спросил 29 Апр, 14 от Nadejda (180 баллов)