Seo Форум

Web разработка => Разработка сайтов => 1С-Битрикс => Тема начата: ewdokimow от 04-03-2013, 18:19:11

Название: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 04-03-2013, 18:19:11
Друзья, потихоньку переделываю сайт с Джумла на Битрикс.

Столкнулся с такой проблемой,  как заменить расширение урла с PHP на HTML. Обратная схема прописана, но в обратном порядке не сработала. Сейчас все урлы (более 200-сот) с html. При переезде хочу сохранить все старые урлы.

Еще хочу из урлов убрать категории. Битрикс их сам прописывает.  На Джумле это сейчас делает sh404sef.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 04-03-2013, 19:22:45
Для замены расширения урлов с PHP на HTML на сайте Joomla, который вы переписываете на Bitrix, вам потребуется выполнить несколько шагов.

1. Сперва вам следует настроить правила перенаправления 301, чтобы старые урлы с расширением PHP ссылались на новые урлы с расширением HTML. Это позволит сохранить все внешние ссылки и поисковый индекс.

2. Далее вам нужно определиться, какие урлы нужно изменить. Если вы хотите удалить категории из урлов, вы можете использовать функционал Bitrix для автоматической генерации урлов без учета категорий. Это обычно настраивается через модуль "Управление структурой" или в настройках компонента.

3. Когда у вас будет настроен новый формат урлов, вам потребуется создать правила URL-перенаправления в Bitrix, чтобы перенаправить старые урлы с расширением PHP на новые урлы с расширением HTML. Это можно сделать с помощью правил компонента "URL-адрес".

4. Наконец, после импорта старых урлов и настройки перенаправлений проверьте, что все работает должным образом и нет неработающих ссылок.

В Битриксе замена расширения урлов с PHP на HTML может быть достигнута с помощью использования компонента "URL-адрес". Вот как это можно сделать:

1. Откройте панель администратора Битрикса и перейдите в раздел "Сайты" (находится в верхнем меню).

2. Выберите нужный веб-сайт из списка и перейдите в его настройки.

3. Перейдите на вкладку "Настройки" и найдите раздел "Шаблоны URL-адресов".

4. В этом разделе вы можете определить правила для перенаправления урлов с расширением PHP на урлы с расширением HTML.

5. Щелкните на кнопке "Добавить шаблон" и введите шаблон, который будет соответствовать вашим урлам. Например, если ваш текущий урл имеет вид "/page.php", то шаблон может быть таким: "/page.html".

6. После ввода шаблона, сохраните настройки и проверьте, что новые урлы корректно работают.

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

RewriteRule ^(.*)\.html$ $1.php [R=301,L]
Все ссылки с расширением html будут редиректится на php
Подробнее о 301 редиректе тут (http://blog.brainf.net/seo/301-redirekt-populyarnye-shablony/)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 04-03-2013, 19:28:00
Цитата: parmactep от 04-03-2013, 19:22:45
RewriteRule ^(.*)\.html$ $1.php [R=301,L]
Все ссылки с расширением html будут редиректится на php
Подробнее о 301 редиректе тут (http://blog.brainf.net/seo/301-redirekt-populyarnye-shablony/)
На существующие ссылки уже есть ссылочная масса. Нужно php на html
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 04-03-2013, 19:49:37
Тогда с точностью до наоборот
RewriteRule ^(.*)\.php$ $1.html [R=301,L]
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 10-03-2013, 22:54:34
Цитата: parmactep от 04-03-2013, 19:49:37
Тогда с точностью до наоборот
RewriteRule ^(.*)\.php$ $1.html [R=301,L]

Такая конструкция для Битрикса по умолчанию работать не будет. Каждый раздел содержит файл "index.php"  и получается по этому правилу index.php -> index.html Но, если файла index.html нет, и тут вступает в игру обработчик динамических (виртуальных) урлов и этот файл /bitrix/urlrewrite.php тоже редиректит на /bitrix/urlrewrite.html которого точно нет, получается цикл.

Можно пример урлов  как есть, и как надо, просто не понимаю я зачем вам с .html нужно связываться (просто сделать папками для статических страниц). Если это для конкретного раздела или разделов, то можно только для них прописать это правило в .htaccess, но не для всего сайта.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: zloberman от 11-03-2013, 09:18:50
сделать от обратного - редиректить все html ссылки на php вариант, для htaccess есть простая конструкция для этого
ссылочная масса, посетители и роботы - все перельется
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 11-03-2013, 10:55:48
Цитата: ewdokimow от 04-03-2013, 18:19:11
Друзья, потихоньку переделываю сайт с Джумла на Битрикс.

Столкнулся с такой проблемой,  как заменить расширение урла с PHP на HTML. Обратная схема прописана, но в обратном порядке не сработала. Сейчас все урлы (более 200-сот) с html. При переезде хочу сохранить все старые урлы.

Еще хочу из урлов убрать категории. Битрикс их сам прописывает.  На Джумле это сейчас делает sh404sef.

Коллеги, ошибка! исправленная строчка: RewriteRule ^(.*)\.php$ /$1.html [R=301,L] (со слешем перед $1), если говорить не о Битриксе, а об абстрактном перенаправлении с .php на .html

Как вариант только для раздела /test/  сайта на CMS Битрикс и всех его подразделов:
RewriteRule ^test/(.*)\.php$ /test/$1.html [R=301,L]
Важно! В этом случае раздел(подраздел) должен существовать физически и в нем должен быть хоть и пустой, но файл "название файла.php" и конечно же ваш "название файла.html"
Пример:
/test/proverka.php -> /test/proverka.html  (для того чтобы сработало должны существовать оба файла)

Но еще раз повторюсь: ewdokimow Нужно более подробно вам поставить задачу, с конкретными примерами, в данном случае абстрактное перенаправление описано выше, а конкретно под CMS Битрикс все может быть много сложнее и даже возможно не через .htaccess, а в коде. 

Добавлено: 11-03-2013, 11:44:22


Есть еще один оригинальный способ в CMS Битрикс сделать подобный редирект
Файл ЧПУ (сохранить себе копию, прежде чем изменять!)
/urlrewrite.php

Пример:

<?
$arUrlRewrite = array(
   array(
      "CONDITION"   =>   "#^/news/#",
      "RULE"   =>   "",
      "ID"   =>   "bitrix:news",
      "PATH"   =>   "/news/index.php",
   ),
   array(
      "CONDITION"   =>   "#^/test/(.+)\.php#",
      "RULE"   =>   "$1.html",
      "ID"   =>   "",
      "PATH"   =>   "/test/",
   ),
);
?>


где:
   array(
      "CONDITION"   =>   "#^/test/(.+)\.php#",
      "RULE"   =>   "$1.html",
      "ID"   =>   "",
      "PATH"   =>   "/test/",
   ),

отвечает за перенаправление с /test/filename.php на /test/filename.html
Плюс данного метода в том, что файлы /test/filename.php не просто не нужны, а не должны существовать, в отличие от реврайта .htaccess, но есть и большой минус - сторонние (вручную) включения таких редиректов может быть затерто сохранением параметров кастомизированного компонента с включенным ЧПУ, такое происходит не часто, но наличие нужных строк приходится  контролировать.

И для тех у кого новая 12-я версия CMS, там есть такой инструмент, как Короткие ссылки, это что-то типо ручного редиректа (с какой на какую). Найти его можно в разделе Настройки. В принципе это вариант неплохой, сам не пробовал, но думаю будет работать. Для него плюсы те же, а минусов нет.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 11-03-2013, 15:36:14
Вебнет, сейчас сайт на Джумле http://www.kovka-istrazone.ru (http://www.kovka-istrazone.ru). Урлы с html и категории скрыты (sh404sef). Переделываю сайт на Битрикс http://истра-ковка.рф (http://xn----7sbbh1aob4aojl.xn--p1ai) (потом алиас сделаю). Естественно, хочу сохранить существующие урлы.

Добавлено: 11-03-2013, 19:04:08


короткие ссылки пробовал.

(https://www.sbup.com/seo-forum/proxy.php?request=http%3A%2F%2Fs1.ipicture.ru%2Fuploads%2F20130311%2FMJ4RMXMU.jpg&hash=b0438608b55678bac5d4de07ea4873e3275a91e8) (http://s1.ipicture.ru/)

так понимаю, что это оптимальное решение?
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 11-03-2013, 19:43:06
Цитата: ewdokimow от 11-03-2013, 15:36:14
Вебнет, сейчас сайт на Джумле http://www.kovka-istrazone.ru (http://www.kovka-istrazone.ru). Урлы с html и категории скрыты (sh404sef). Переделываю сайт на Битрикс http://истра-ковка.рф (http://xn----7sbbh1aob4aojl.xn--p1ai) (потом алиас сделаю). Естественно, хочу сохранить существующие урлы.

Тогда два варианта:
Вариант 1 и самый простой, да и думаю самый правильный
Если я правильно понял вы хотите сохранить структуру сайта такой же, как и на старом.
Открываем Конткнт->Структура сайта->Ваш сайт
Добавить-> Добавить файл
Указываем Имя файла (к примеру первый foto-kovanyh-rabot.html) прописываем метатеги и заголовки и контентную часть.
Сохраняем.
Проделываем такое со всеми файлами.

Вот и все, никакого редиректа не нужно, структура идентична.
   
Вариант 2
Новая структура сайта, новые урлы с тем же контентом.

Чтобы не потерять старые ссылки необходимо сделать с таких страниц 301 редирект. Для этого в файл Битрикса
/bitrix/php_interface/init.php (если файла нет, создайте его пустым)
вставить код:

//массив
$arRed = array (
     "/foto-kovanyh-rabot.html" => "/foto/",
     "/zabori-kovanie.html" => "/foto/zabori-kovanie/",
);
// если есть в массиве, то редирект
if(isset($arRed[$_SERVER["REQUEST_URI"]])) LocalRedirect($arRed[$_SERVER["REQUEST_URI"]],false,"301 Moved Permanently");


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

Важно! Ошибки в этом файле могут привести к отказу работы всего сайта. Прежде чем изменять файл сохраните его копию у себя. Код PHP должен быть вставлен внутрь <? ... ?>  где '...' - код (уже существующий или только ваш)

Как вариант, вместо этого можно использовать, описанный выше инструмент - Короткие ссылки.

Если как-то иначе, ewdokimow, поправьте.

Добавлено: 11-03-2013, 20:03:10


Цитата: ewdokimow от 11-03-2013, 15:36:14
так понимаю, что это оптимальное решение?

Да самое лучшее из всех, и без заморочек.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 11-03-2013, 21:03:51
Вебнет, я пробовал, как вы говорите:
Вариант 1 и самый простой, да и думаю самый правильный
Если я правильно понял вы хотите сохранить структуру сайта такой же, как и на старом.
Открываем Конткнт->Структура сайта->Ваш сайт
Добавить-> Добавить файл
Указываем Имя файла (к примеру первый foto-kovanyh-rabot.html) прописываем метатеги и заголовки и контентную часть.
Сохраняем.
Проделываем такое со всеми файлами.


так получается:
(https://www.sbup.com/seo-forum/proxy.php?request=http%3A%2F%2Fi51.fastpic.ru%2Fbig%2F2013%2F0311%2F27%2Fedefddad87467152694f3a328cee0127.png&hash=0bc2efb2dc6387d95b28949d5e99f3cee7448133) (http://fastpic.ru/)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 12-03-2013, 13:12:18
Цитата: ewdokimow от 11-03-2013, 21:03:51
Вебнет, я пробовал, как вы говорите:
Вариант 1 и самый простой, да и думаю самый правильный
Если я правильно понял вы хотите сохранить структуру сайта такой же, как и на старом.
Открываем Конткнт->Структура сайта->Ваш сайт
Добавить-> Добавить файл
Указываем Имя файла (к примеру первый foto-kovanyh-rabot.html) прописываем метатеги и заголовки и контентную часть.
Сохраняем.
Проделываем такое со всеми файлами.


так получается:
(https://www.sbup.com/seo-forum/proxy.php?request=http%3A%2F%2Fi51.fastpic.ru%2Fbig%2F2013%2F0311%2F27%2Fedefddad87467152694f3a328cee0127.png&hash=0bc2efb2dc6387d95b28949d5e99f3cee7448133) (http://fastpic.ru/)

По всему видно ваш сервер не обрабатывает .html как PHP

RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

Добавив эти строки в .htaccess вы дадите директиву серверу выполнять инструкции PHP не только в файлах с расширением *.php и *.phtml, но и в файлах с расширением *.htm и *.html.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 12-03-2013, 16:53:34
После добавления
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml


Сайт перестал открываться.

Вебнет, может хостеру написать?
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 14-03-2013, 14:36:36
Цитата: ewdokimow от 12-03-2013, 16:53:34
После добавления
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml


Сайт перестал открываться.

Вебнет, может хостеру написать?
Да к хостеру лучше всего.

Попробуйте оставить только:
AddType application/x-httpd-php .php .htm .html
Если и это не поможет, то без вариантов, нужно конфиг апача править, а он наверняка вам не доступен.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 14-03-2013, 14:46:27
Вебнет, у меня не апачь, а nginx.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 14-03-2013, 16:54:26
Цитата: ewdokimow от 14-03-2013, 14:46:27
Вебнет, у меня не апачь, а nginx.

nginx + PHP без апача? и битрикс работает?

Обычно nginx используется как FrontEnd для статики, а вся динамика идет через BackEnd апач+PHP

nginx + PHP без апача может работать, но требует серьезных настроек и Битрикс на такой системе работать если и будет, то только после серьезных изменений. Удивительно.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 19-03-2013, 18:29:58
Цитата: Вебнет от 10-03-2013, 22:54:34/bitrix/urlrewrite.php тоже редиректит на /bitrix/urlrewrite.html которого точно нет, получается цикл
Уверенны что происходит именно так? С каких таких пор инклюды начали на редиректы реагировать

Добавлено: 19-03-2013, 18:32:39


Цитата: Вебнет от 14-03-2013, 16:54:26nginx + PHP без апача может работать, но требует серьезных настроек и Битрикс на такой системе работать если и будет, то только после серьезных изменений. Удивительно.
Одно из самых распространенных заблуждений... Вполне адекватно nginx работает с ПХП...
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 09:24:07
Цитата: parmactep от 19-03-2013, 18:29:58
Уверенны что происходит именно так? С каких таких пор инклюды начали на редиректы реагировать
А где спрашивается вы тут увидели упоминание инклюдов, parmactep? разговор про редиректы.
И да, уверен, опыт + эксперимент. И если вам это что-то скажет, частично содержимое .htaccess Битрикса на ваш вопрос:
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

Цитата: parmactep от 19-03-2013, 18:29:58
Одно из самых распространенных заблуждений... Вполне адекватно nginx работает с ПХП...
Разговор не про адекватность работы PHP в nginx, а конкретно проекта на Битрикс.
Читайте тему с начала! Тогда, parmactep, у вас вопросов таких не будет. Я писал о том, что Nginx сложно настроить на работу с CMS Битрикс не подготовленному человеку, но в принципе можно.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 10:42:29
Ну так вы же сами приводите фрагмент кода, который не влияет на существующие файлы

Добавлено: 21-03-2013, 10:45:53


Цитата: Вебнет от 21-03-2013, 09:24:07Я писал о том, что Nginx сложно настроить на работу с CMS Битрикс не подготовленному человеку, но в принципе можно.
Вы считаете что на хостингах крутят настройки неподготовленные люди? Если на хостинге nginx как дефолтный сервер, то явно поддержка ЦМС осуществляется... А так согласен, что nginx в данном случае отдает только статику иначе о htacess не шло бы речи
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 11:18:16
Цитата: parmactep от 21-03-2013, 10:42:29
Вы считаете что на хостингах крутят настройки неподготовленные люди? Если на хостинге nginx как дефолтный сервер, то явно поддержка ЦМС осуществляется... А так согласен, что nginx в данном случае отдает только статику иначе о htacess не шло бы речи
Дайте ссылку на хостинг nginx+PHP (Без апача) с поддержкой 1С-Битрикс, если такие есть, буду благодарен.
Я считаю, что люди задающие вопросы здесь, не являются профессионалами в настройке nginx под Битрикс. Если у вас есть чем с ними поделиться, дать совет по теме, велком. А спорить, не вижу смысла.

Цитата: parmactep от 21-03-2013, 10:42:29
Ну так вы же сами приводите фрагмент кода, который не влияет на существующие файлы
Именно так, в ответ на вырванный вами из контекста кусок
/bitrix/urlrewrite.php тоже редиректит на /bitrix/urlrewrite.html которого точно нет, получается цикл
в данном случае файла /bitrix/urlrewrite.html  в Битриксе нет (по определению, не предусмотрен) и других *.html в админке.
Запрос несуществующего файла в данном случае приведет к бесконечному редиректу (сервер выдаст ошибку) привел кусок .htaccess чтобы вам понятнее было почему. По мне логично, а главное проверено на практике. Ниже то, что предлагали тогда:

RewriteRule ^(.*)\.php$ /$1.html [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]

Прочитайте пожалуйста всю тему целиком, возможно, поймете относительно чего я так написал, все уже разжевал.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 12:18:19
Цитата: Вебнет от 21-03-2013, 11:18:16А спорить, не вижу смысла.
Я вроде и не пытался спорить....

Добавлено: 21-03-2013, 12:22:10


касательно хостинга первый попавшийся под руку пример
http://hostinghutor.com/blog/1c-bitrix-nginx.html

Добавлено: 21-03-2013, 12:34:00


RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
Зачем?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

дописывается ко всем переадресациям... В противном случае не только ваш пример, а и изображения не отдаются....
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 12:44:37
Цитата: parmactep от 21-03-2013, 12:18:19
касательно хостинга первый попавшийся под руку пример
http://hostinghutor.com/blog/1c-bitrix-nginx.html
Тут скорее начальный мануал по настройкам сервера, написан пример 404, но ничего не написано, о том как настроить ЧПУ и т.п. редиректы Битрикса. Т.е. в итоге нужно купить VPS, установить самостоятельно nginx с php-fpm и настроить как-то (имеем ввиду обычного пользователя) все это для Битрикс.

Не убедили :) Нужен тариф с уже установленным и настроенным ПО под Битрикс.

Спор, не спор, но диалог у нас с вами сейчас, те кто задавал вопросы, в теме уже получили на них ответы.

Совет - это то что любой может повторить, легко (на своем уровне), и получить при этом тот же результат.

Добавлено: 21-03-2013, 13:01:38


Цитата: parmactep от 21-03-2013, 12:18:19
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
Зачем?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

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

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

RewriteCond %{REQUEST_FILENAME} !-f   # не файл
RewriteCond %{REQUEST_FILENAME} !-l   # не самлинк
RewriteCond %{REQUEST_FILENAME} !-d  # не директория
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ # не /bitrix/urlrewrite.php
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]  # только при выполении всех условий переходим в обработчик


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

Вывод:
1) с Битриксом вы никак не встречались.
2) в работе инструкций .htaccess для апача не разбираетесь, ну или не хотите об этом просто почитать и подумать над тем что вам пишут более опытные товарищи :).
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 13:11:46
Цитата: Вебнет от 21-03-2013, 12:44:371) с Битриксом вы никак не встречались.
2) в работе инструкций .htaccess для апача не разбираетесь, ну или не хотите об этом просто почитать и подумать над тем что вам пишут более опытные товарищи
Вы абсолютно правы... С Битриксом я никогда не работал и опыта у меня нет абсолютно.... ;D


Добавлено: 21-03-2013, 13:12:42


Цитата: Вебнет от 21-03-2013, 12:44:37RewriteCond %{REQUEST_FILENAME} !-f   # не файл
Цитата: Вебнет от 21-03-2013, 12:44:37RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ # не /bitrix/urlrewrite.php
Вам опыт подсказывает что /bitrix/urlrewrite.php не является файлом?
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 13:17:30
Цитата: parmactep от 21-03-2013, 13:11:46
Вы абсолютно правы... С Битриксом я никогда не работал и опыта у меня нет абсолютно....


Добавлено: 21-03-2013, 13:12:42

Вам опыт подсказывает что /bitrix/urlrewrite.php не является файлом?

Даже отвечать не хочу, прoстите, на глупости. Совет: почитайте мануалы, погуглите. Успехов :)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 13:23:23
Цитата: Вебнет от 21-03-2013, 13:17:30Даже отвечать не хочу, прoстите, на глупости. Совет: почитайте мануалы, погуглите. Успехов
Это самый удобный для вас выход... Спрыгнуть с беседы...
когда нечего ответить на "глупости"
Я всего лишь у вас спросил зачем вы пишите избыточный код делая масло масляным....

Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 13:34:08
Цитата: parmactep от 21-03-2013, 13:23:23
Это самый удобный для вас выход... Спрыгнуть с беседы...
когда нечего ответить на "глупости"
Я всего лишь у вас спросил зачем вы пишите избыточный код делая масло масляным....

Это не избыточный код, это можно сказать основа работы ЧПУ Битрикса!
А когда задают такие очевидно глупые вопросы "Вам опыт подсказывает что /bitrix/urlrewrite.php не является файлом?"  не делая попытки разобраться, реакция думаю вполне адекватна.

Вам еще раз написать условия редиректа на  /bitrix/urlrewrite.php давайте уд совсем все в примитве и словами

Блок условий:
RewriteCond %{REQUEST_FILENAME} !-f   # не файл
RewriteCond %{REQUEST_FILENAME} !-l   # не самлинк
RewriteCond %{REQUEST_FILENAME} !-d  # не директория
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ # не /bitrix/urlrewrite.php
Словами: Если запрошенный REQUEST_FILENAME не файл И не самлинк И не директория И не /bitrix/urlrewrite.php
То выполнить:
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]  # только при выполении всех условий переходим в обработчик
редирект на файл /bitrix/urlrewrite.php
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 13:38:39
Я как человек более неопытный и глупый позволю себе уточнить еще раз
RewriteCond %{REQUEST_FILENAME} !-f   # не файл а значит и не /bitrix/urlrewrite.php
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 13:52:02
Цитата: parmactep от 21-03-2013, 13:38:39
Я как человек более неопытный и глупый позволю себе уточнить еще раз
RewriteCond %{REQUEST_FILENAME} !-f   # не файл а значит и не /bitrix/urlrewrite.php

Совсем просто:
Все эти условия сводятся к тому, что если запрошенный URL (файл, папка) на сервере не найден, то запрос идет на /bitrix/urlrewrite.php

Вот пример тебе ЧПУ
Ты запросил страницу http://site.ru/test/12/30/
REQUEST_FILENAME примет значение /test/12/30/
но на сервере у нас нет папки /test/12/30/
потому в соответствии с условиями запрос редиректом пойдет на обработчик /bitrix/urlrewrite.php где будет перенаправлен на страницу к примеру /test/index.php?SECTION_ID=12&ELEMENT_ID=30, которая уже сгенерит контент по переменным. Хотя для пользователя URL останется http://site.ru/test/12/30/
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 13:58:04
Зачем вы мне это сейчас обьясняете?? Я и без вас прекрасно знаю как работает ЧПУ и в Битриксе в часности....
Я вам конкретный вопрос задал
зачем нужна строка?
ЦитироватьRewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
А вы мне про ЧПУ начинаете рассказывать...
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 14:09:07
Цитата: parmactep от 21-03-2013, 13:58:04
Зачем вы мне это сейчас обьясняете?? Я и без вас прекрасно знаю как работает ЧПУ и в Битриксе в часности....
Я вам конкретный вопрос задал
зачем нужна строка?А вы мне про ЧПУ начинаете рассказывать...
Вопрос был задан вами ранее не корректно, хорошо что поправили его.
Строка RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ нужна, чтобы исключить зацикливание, если какие умники его случайно удалят. Если ткое произойтет ЧПУ конечно не будет работать, но сайт частично останется функционален. :)  Все просто, не правда ли? могли бы и сами догадаться :)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 14:13:01
а почему вы тогда для index.php не делаете такое же условие? :o Его ведь тоже могут удалить....

Добавлено: 21-03-2013, 14:14:21


Цитата: Вебнет от 21-03-2013, 14:09:07Все просто, не правда ли? могли бы и сами догадаться
Куда мне глупому и не опытному...
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 14:20:53
Цитата: parmactep от 21-03-2013, 14:13:01
а почему вы тогда для index.php не делаете такое же условие? :o

Потому что, если нет файла index.php (как и любого другого) или запрошенной папки, то проблемы нет (пример выше был), такой запрос обработает /bitrix/urlrewrite.php, но если нет и самого /bitrix/urlrewrite.php, то сервер зациклит таким запросом, потому так нужна эта строка RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$ конечно это актуально только в битриксе.

В некоторых, скажем так "новостных движках" основанных на корневом index.php, попробуй удали index.php, весь сайт упадет тут же.

Добавлено: 21-03-2013, 14:22:55


Цитата: parmactep от 21-03-2013, 14:13:01
Куда мне глупому и не опытному...

И вас вылечим :)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 21-03-2013, 15:01:15
Вебнет и parmactep, Вы ведете очень интересную и познавательную дискуссию. Очень много нового для себя узнал. Спасибо.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 18:39:58
Цитата: Вебнет от 21-03-2013, 14:20:53И вас вылечим
Вы себе не представляете как я благодарен вашим советам и пояснениям ;)
ewdokimow, для этого и ведем собственно... Тем более насколько я понял вы свой вопрос решили, поэтому можем себе позволить совсем чуть-чуть увести тему в сторону...

Добавлено: 21-03-2013, 18:44:10


Вебнет, к вам есть следующий вопрос....
ЦитироватьRewriteRule ^(.*)\.php$ /$1.html [R=301,L]
Чем вам отсутствие слеша не понравилось?
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 21-03-2013, 20:43:41
Цитата: parmactep от 21-03-2013, 18:39:58
Вы себе не представляете как я благодарен вашим советам и пояснениям ;)
ewdokimow, для этого и ведем собственно... Тем более насколько я понял вы свой вопрос решили, поэтому можем себе позволить совсем чуть-чуть увести тему в сторону...

Добавлено: 21-03-2013, 18:44:10


Вебнет, к вам есть следующий вопрос....Чем вам отсутствие слеша не понравилось?

Хм.. вопрос не мой, но за благодарность, спасибо.
Теперь к RewriteRule ^(.*)\.php$ /$1.html [R=301,L] , нравится или нет - это не вопрос, а вот в плане работает или нет, уже теплее. А работает он только со слешем.
Разберем первую часть ^(.*)\.php$ (регулярное выражение):
тут
^ - маркер начала строки по сути обозначает корень сайта, т.е.  "/"
(.*) - любой символ (вхождением от 0 до бесконечности раз, любая строка или ее отсутсвие)
\.php - хвост ".php"
$ - маркер конца строки

Далее /$1.html
/ - корень
$1 - маркер строки заменяемы тем что внутри скобок (.*), если скобок несколько, то маркеры для них от $1 до $N
.html  - хвост

Пример:
Запрашиваем /test/index.php
разбор
^ = /
(.*) = test/index = $1 (как видно слеша нет)
\.php = .php

результат /test/index.html

Если взять без регулярки, тот же редирект будет выглядеть так:
RewriteRule ^test/index.php$ /test/index.html [R=301,L]

Ну и конечно пробуем и тестирует на реальном сервере, не на рабочем проекте конечно, а на тестовой версии. :)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 21-03-2013, 22:32:20
Цитата: Вебнет от 21-03-2013, 20:43:41^ - маркер начала строки по сути обозначает корень сайта, т.е.  "/"
Мне кажется или у вас здесь закралась ошибка?
^ - действительно маркер начала строки... Но никак не /
Давайте разберем что получает RewriteRule и как он работает...

Добавлено: 21-03-2013, 22:48:39


в RewriteRulу передается не ссылка а относительный путь к запрашиваемому файлу.... Причем относительным к месту расположения файла .htacess
Вы же задаете путь относительно корня сайта

Добавлено: 21-03-2013, 23:15:47


За слеш (если быть точнее, то за абсолютный путь к файлу) "отвечает" RewriteBase в котором указывается путь от корня сайта до файла .htacess ... В случае если .htacess находится в корне сайта, то это выглядит следующим образом
RewriteBase /
Причем стоит отметить что использование RewriteBase является обязательным в случае если задействован mod_rewrite... Иначе не избежать проблем с редиректами....
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 22-03-2013, 10:00:19
Цитата: parmactep от 21-03-2013, 18:39:58
ewdokimow, для этого и ведем собственно... Тем более насколько я понял вы свой вопрос решили, поэтому можем себе позволить совсем чуть-чуть увести тему в сторону...
Вопросов еще много, по мере сил стараюсь решать.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 22-03-2013, 10:10:50
Цитата: parmactep от 21-03-2013, 22:32:20
Мне кажется или у вас здесь закралась ошибка?
^ - действительно маркер начала строки... Но никак не /
Давайте разберем что получает RewriteRule и как он работает...

Добавлено: 21-03-2013, 22:48:39


в RewriteRulу передается не ссылка а относительный путь к запрашиваемому файлу.... Причем относительным к месту расположения файла .htacess
Вы же задаете путь относительно корня сайта

Добавлено: 21-03-2013, 23:15:47


За слеш (если быть точнее, то за абсолютный путь к файлу) "отвечает" RewriteBase в котором указывается путь от корня сайта до файла .htacess ... В случае если .htacess находится в корне сайта, то это выглядит следующим образом
RewriteBase /

Начну с того что мы с вами обсуждаем не общий случай с абстрактным .htaccess а частный для CMS Битрикс.
Поэтому рассматривается вопрос о файле .htaccess находящемся в корне сайта по умолчанию и имеющем стандартное содержание:

Options -Indexes
Errordоcument 404 /404.php

<IfModule mod_php5.c>
  php_flag session.use_trans_sid off
  php_value display_errors 1
  #php_value mbstring.internal_encoding UTF-8
</IfModule>

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  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_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" 
</IfModule>


Как видим RewriteBase / здесь нет, отсюда вывод: ваше решение у пользователей не работает. А RewriteRule ^(.*)\.php$ /$1.html [R=301,L] было проверено на рабочем сервере с установленным Битриксом.

Ну, а если все же поставить RewriteBase / , то вот эта строка RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L] (вокруг которой было столько разговоров ранее) будет редиректить на //bitrix/urlrewrite.php
И я не уверен, что такой запрос корректно отработает.

Совет всем: Подходите ответственнее к тому, что советуете людям, думайте и проверяйте прежде чем что либо написать.

Цитата: parmactep от 21-03-2013, 22:32:20
Причем стоит отметить что использование RewriteBase является обязательным в случае если задействован mod_rewrite... Иначе не избежать проблем с редиректами....
По поводу обязательности этого правила, это кому как удобнее если вы используете, хорошо, но другие не обязаны этого делать.
Тут вы сами и ответили на свой вопрос, почему просто RewriteRule ^(.*)\.php$ $1.html [R=301,L] без слеша не работает в данном случае.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 22-03-2013, 10:48:49
Вы опять потом будете говорить что я некоректно вопросы задаю...
Повторюсь:
так как RewriteRule работает с относительным путем использование RewriteBase является обязательным

Добавлено: 22-03-2013, 11:10:13


Цитата: Вебнет от 22-03-2013, 10:10:50Начну с того что мы с вами обсуждаем не общий случай с абстрактным .htaccess а частный для CMS Битрикс.
Нуну.... А потом возникает вопрос "Я делаю, а нихрена не работает"...
Нужно изначально делать ПРАВИЛЬНО, а не часными случаями.... Я вам конкретно рассказал о том с чем работет RewriteRule и почему так а не иначе.... А от вас только увидел что ^ = /

Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 22-03-2013, 11:19:19
Цитата: parmactep от 22-03-2013, 10:48:49
Вы опять потом будете говорить что я некоректно вопросы задаю...
Повторюсь:
так как RewriteRule работает с относительным путем использование RewriteBase является обязательным

То что для вас обязательно, для других нет, или даже вредно в какой-то конкретной ситуации.
Попробуйте на реальном сервере, с установленной CMS Битрикс разные варианты. Тогда и будем разговаривать.
Пока я  от вас слышу вопросы: Почему я не прав? диалог считаю бессмысленным. Я пишу огромные маны на "Почему?", но пока вы не попробуете сделать что-то сами и не получите результат, мне вас не переубедить. :)

Вы не понимаете самого элементарного, что на одну и ту же задачу может быть несколько решений, но каждое из них это комплекс (каких-то правил, действий) , выдернуть из одного кусок и вставить в другое не всегда продуктивно.

Ваше решение я подогнал под то что есть.
Тогда вы не написали его полностью и оно у пользователей не работало, это ваш промах, уж извините:

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


Желательно конечно в рамках списка всех правил .htaccess стандартного для данной CMS, и после реальной проверки, но хотя бы так.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 22-03-2013, 11:56:02
Цитата: Вебнет от 22-03-2013, 11:19:19но пока вы не попробуете сделать что-то сами и не получите результат, мне вас не переубедить
Уважаемый... Открою маленький секрет... Я уже более восьми лет пробую подобные вещи на реальных проектах... ;) Многие люди говорят что весьма успешно)))
RewriteBase является обязательным хотя бы потому что имеет значение по-умолчанию зависящее от настроек сервера.
И вредным на самом деле может быть только его отсутствие...
Как вы там говорили? Погуглите, мануалы почитайте..... Тогда ваш опыт+эксперемент подкрепится еще и знаниями внутренних механизмов используемых вами технологий....
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 22-03-2013, 12:22:42
Цитата: parmactep от 22-03-2013, 11:56:02
Уважаемый... Открою маленький секрет... Я уже более восьми лет пробую подобные вещи на реальных проектах... ;) Многие люди говорят что весьма успешно)))
RewriteBase является обязательным хотя бы потому что имеет значение по-умолчанию зависящее от настроек сервера.
И вредным на самом деле может быть только его отсутствие...
Как вы там говорили? Погуглите, мануалы почитайте..... Тогда ваш опыт+эксперемент подкрепится еще и знаниями внутренних механизмов используемых вами технологий....
Круто, а я уже 9 лет занимаюсь разработкой :) и не кичусь этим кстати.

Разговаривать бесполезно, тут не место для споров между нами, предложите свое решение, а люди уже сами выберут, что им больше подходит.
Я не писал, что ваше решение в комплексе не верное и отсутствие RewriteBase это хорошо, все зависит от конкретных настроек сервера и минуточку мнения всего сообщества разработчиков CMS (повторю: файл стандартный не мною придуманный).
Но то что вы просто бросили в самом начале кусок RewriteRule ^(.*)\.php$ $1.html [R=301,L] не разобравшись,а  почему у других он не работает, это ваш косяк.

Что вам мешало просто написать
RewriteBase /
RewriteRule ^(.*)\.php$ $1.html [R=301,L]

и пару слов в описание? И никаких споров.
нет нужно помериться пи.. :)

Вопрос считаю закрытым, поскольку наш коллега ewdokimow уже получил ответы по интересующей его теме. А мне надо работать :).
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 22-03-2013, 12:49:51
Цитата: Вебнет от 22-03-2013, 12:22:42
RewriteBase /
RewriteRule ^(.*)\.php$ $1.html [R=301,L]



Попробовал, вот получается:
(https://www.sbup.com/seo-forum/proxy.php?request=http%3A%2F%2Fs017.radikal.ru%2Fi420%2F1303%2Fb5%2F9715eedea751.jpg&hash=d280daf5a00a303c111d13763541b8695288a965) (http://www.radikal.ru)
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 22-03-2013, 13:05:16
Цитата: ewdokimow от 22-03-2013, 12:49:51
Попробовал, вот получается:

Попробуйте полную вставку:

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteBase /
#  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}]
  RewriteRule ^(.*)\.php$ $1.html [R=301,L]
</IfModule>

тут закомичены строки # ответственные за ЧПУ.
Но мы уже с вами пробовали все это, для битрикса, что   RewriteBase / + RewriteRule ^(.*)\.php$ $1.html [R=301,L], что просто RewriteRule ^(.*)\.php$ /$1.html [R=301,L] не варианты.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: parmactep от 22-03-2013, 16:50:34
Цитата: Вебнет от 22-03-2013, 12:22:42и не кичусь этим кстати.
Как раз так и называется то чем вы в теме занимаетесь уважаемый "более опытный товарищь"... Вы всю дорогу пытаетесь меня ткнуть куда-то.... За 9 лет могли бы знать что ^ - это не слеш..... Ну да ладно....
Цитата: Вебнет от 22-03-2013, 12:22:42тут не место для споров между нами
Отнюдь... Помоему самое подходящее место... ТС уже говорил о том что много полезного для себя из нашей с вам беседы вынес...
Да и думаю не только ТС...
Цитата: Вебнет от 22-03-2013, 12:22:42Что вам мешало просто написать
Ничего не мешало... А еще я мог бы
<IfModule mod_rewrite.c>
</IfModule>

написать и много чего другого....
А потом лицезреть файл вида
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.wo[0-9]+\.(css|php)$ $1.$2
RewriteRule ^(.*)\.wo[0-9]+\.(js|php)$ $1.$2
RewriteRule ^(.*)\.wo[0-9]+\.(jpe?g|png)$ $1.$2
</IfModule>
RewriteBase /
RewriteRule ^(.*)\.php$ $1.html [R=301,L]
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 22-03-2013, 16:57:39
Цитата: parmactep от 22-03-2013, 16:50:34
Как раз так и называется то чем вы в теме занимаетесь уважаемый "более опытный товарищь"... Вы всю дорогу пытаетесь меня ткнуть куда-то.... За 9 лет могли бы знать что ^ - это не слеш..... Ну да ладно....Отнюдь... Помоему самое подходящее место... ТС уже говорил о том что много полезного для себя из нашей с вам беседы вынес...
Да и думаю не только ТС...Ничего не мешало... А еще я мог бы
<IfModule mod_rewrite.c>
</IfModule>

написать и много чего другого....
А потом лицезреть файл вида
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.wo[0-9]+\.(css|php)$ $1.$2
RewriteRule ^(.*)\.wo[0-9]+\.(js|php)$ $1.$2
RewriteRule ^(.*)\.wo[0-9]+\.(jpe?g|png)$ $1.$2
</IfModule>
RewriteBase /
RewriteRule ^(.*)\.php$ $1.html [R=301,L]


Без комментариев. Не потому, что нечего сказать, не вижу смысла.
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: ewdokimow от 22-03-2013, 19:41:49
Друзья, тут Битрикс на это ругается:
(https://www.sbup.com/seo-forum/proxy.php?request=http%3A%2F%2Fs1.ipicture.ru%2Fuploads%2F20130322%2Fxo7kCrGV.png&hash=af7e1edb617fa29ce95ec590864c0625853b1b22) (http://s1.ipicture.ru/)
Может сталкивались?
Название: Re: Заменить раширение php на html в Битриксе
Отправлено: Вебнет от 22-03-2013, 20:04:57
Цитата: ewdokimow от 22-03-2013, 19:41:49
Друзья, тут Битрикс на это ругается:
(https://www.sbup.com/seo-forum/proxy.php?request=http%3A%2F%2Fs1.ipicture.ru%2Fuploads%2F20130322%2Fxo7kCrGV.png&hash=af7e1edb617fa29ce95ec590864c0625853b1b22) (http://s1.ipicture.ru/)
Может сталкивались?

По расположению файла это самописный компонет. И там предполагаю идет подключение к базе, фактически второе.
Ман по функциям http://dev.1c-bitrix.ru/api_help/
Класс для работы с базой http://dev.1c-bitrix.ru/api_help/main/reference/cdatabase/index.php

И обязательно прописывайте в начала компонента global $DB;
Поскольку глобальный объект $DB класса CDatabase инициализируется в самом начале генерации страницы, и в компонентах он уже доступен, то самостоятельно коннектиться к базе нет необходимости.

К приемеру запрос SELECT:

$strSql = "SELECT * FROM webnet_test WHERE ACTIVE='Y'"; // любой запрос, в принципе и INSERT и UPDATE и DELITE можно, но лучше использовать другие спечиальне функции
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
while($ares = $res->Fetch()) {
print_r($ares); // массив результата выборки
}