- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день!
Кто силен в mod_Rewrite?
Сейчас настройки для перенаправления всех запросов всего в директорию directory1 со структурой сайта.
RewriteCond %{REQUEST_URI} !^/site.com/
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(.*)$ directory1/$1 [L]
Нужно, чтобы статические страницы вида
www.site.com/dir1/file1.html
перенаправлялись на
www.site.com/?cat=dir1&name=file1
www.site.com/dir2/file1.html
перенаправлялись на
www.site.com/?cat=dir2&name=file1
а если не попадает под этот шаблон, то работал старый код
RewriteRule ^(.*)$ directory1/$1 [L]
Гуглил, пробовал, но у меня есть подозрение, что есть некая особенность, что сайт находится в поддиректории directory1, поэтому у меня возникают проблемы.
У Вас разный контент для сайте для адресов с www и без www ?
Этот вопрос возникает после приведенной Вами конструкции
RewriteCond %{REQUEST_URI} !^/site.com/
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(.*)$ directory1/$1 [L]
Если контент одинаковый, то первые две строки из приведенной конструкции можно удалить, они лишние.
(подобные проверки делаются для редиректов с целью оставить только один адрес домена - без www)
У Вас разный контент для сайте для адресов с www и без www ?
Одинаковый, спасибо за совет, попробую!
Значит просто эти две строки остались от образца, по которому делали этот реврайт
А по поводу перенаправления статических страниц, то где-то так
RewriteCond %{REQUEST_URI} ^/(dir1|dir2)/([^./]+)\.html$
RewriteRule .* http://%{HTTP_HOST}/?cat=%1&name=%2 [L]
Это если у вас всего две перечисленные директории dir1 и dir2 (можно их заменить другими, реальными именами)
А для любых директорий можно сделать более универсально
RewriteCond %{REQUEST_URI} ^/([^./]+)/([^./]+)\.html$
RewriteRule .* http://%{HTTP_HOST}/?cat=%1&name=%2 [L]
Если у Вас не получалось, то проблема не в том что сайт в поддиректории, а в том что после применения правил реврайтов в htaccess (если новый адрес находится в "юрисдикции" того же htaccess) происходит новый вход в тот же файл и могут произойти новые реврайты из него, и так до тех пор пока после прохода по файлу преобразований не произойдет, либо после преобразования новый адрес не будет в "юрисдикции" данного htaccess
Чтоб этого избежать нужно применять дополнительные "хитрости" (одного флага [L] не хватает, он останавливает преобразования только текущего прохода по файлу htaccess)
---------- Добавлено 18.01.2013 в 15:17 ----------
Чтоб не было вмешательства других реврайтов попробуйте сразу после имеющихся строк
RewriteEngine On
RewriteBase /
(до любых других реврайтов) добавить такой код
RewriteCond %{ENV:REDIRECT_RVR} ^yes$
RewriteRule .* - [L]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)\.html$
RewriteRule .* http://%{HTTP_HOST}/?cat=%1&name=%2 [L,E=RVR:yes]
У Вас разный контент для сайте для адресов с www и без www ?
Если контент одинаковый, то первые две строки из приведенной конструкции можно удалить, они лишние.
(подобные проверки делаются для редиректов с целью оставить только один адрес домена - без www)
Попробовал убрать через www интерфейс, на час уложил хостинг, пока комп с нормальным доступом искал 😂
На аккаунте много сайтов, получается убрав эти две строчки - применил последнее условие ко всем сайтам.... вообщем все стали недоступны.
Дальше буду пробовать уже при полном доступе к хостингу. Заморочки с этим godaddy
Если доменов много адресуется на папку с данным файлом htaccess, то конечно же перед правилом в этом файле, касающимся только одного домена, нужно ставить проверку
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$
Так же и для реврайтов страниц вида
www.site.com/dir1/file1.html
если реврайты нужны только для конкретного домена site.com, нужно добавлять такую проверку:
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)\.html$
RewriteRule .* http://%{HTTP_HOST}/?cat=%1&name=%2 [L,E=RVR:yes]
Благодарю за исчерпывающий ответ, получилось!