Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Не работает mod_rewrite у apache  (Прочитано 10095 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ibadly

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Не работает mod_rewrite у apache
« : 13 Января 2014, 15:11:21 »
apache2 -v
Server version: Apache/2.4.6 (Ubuntu)
Server built:   Dec  5 2013 18:32:22

a2enmod rewrite
Module rewrite already enabled

все это на xubuntu последней версии

mod включен а  по факту не работает!!

Пользователь решил продолжить мысль 13 Января 2014, 15:23:37:
Думаю полезно будет указать содержимое .htaccess

он от CMS "yupe" который по умолчанию

AddDefaultCharset utf-8
Options +FollowSymLinks
IndexIgnore */*

ServerSignature Off
php_flag expose_php Off

<IfModule mod_deflate.c>
    # выставляем заголовок Content-Encoding: gzip
    AddEncoding gzip .gz

    # для favicon.ico
    AddOutputFilterByType DEFLATE image/x-icon
    # также для CSS- и JavaScript-файлов
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE text/css

    # отключаем сжатие для тех браузеров, у которых проблемы
    # с его распознаванием
    BrowserMatch "MSIE [456]" no_gzip dont-vary
    BrowserMatch "SV1;" !no_gzip !dont-vary
    BrowserMatch "Opera" !no_gzip !dont-vary
    BrowserMatch "Firefox/[0-3]\." gzip-only-text/html
    BrowserMatch "Firefox/3\.[1-9]" !gzip-only-text/html
    BrowserMatch "Chrome/2" gzip-only-text/html
    BrowserMatch "Safari" gzip-only-text/html
    BrowserMatch "Konqueror" gzip-only-text/html
</IfModule>

<IfModule mod_expires.c>
    # включаем кэширование для всех файлов сроком на 10 лет
    ExpiresActive On
    ExpiresDefault "access plus 4 days"

    # отключаем его для HTML-файлов
    <FilesMatch .*\.(shtml|html|phtml|php)$>
        ExpiresActive Off
    </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
    # указываем прокси-серверам передавать заголовок User-Agent
    # для корректного распознавания сжатия
    Header append Vary User-Agent env=!dont-vary

    # запрещаем кэширование на уровне прокси-сервера для всех
    # файлов, для которых у нас выставлено сжатие,
    <FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
        Header append Cache-Control: "private, must-revalidate"
    </FilesMatch>
</IfModule>
<IfModule mod_rewrite.c>
    RewriteEngine on
   
    # Универсальный редирект с домена С www. на домен БEЗ www
    # при необходимости - раскомментировать:
    #
    # RewriteCond %{HTTPS} !=on
    # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    # RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    # prevent httpd from serving dotfiles (.htaccess, .svn, .git, etc.)
    RedirectMatch 403 /\..*$

    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # otherwise forward it to index.php
    RewriteRule . index.php
</IfModule>

Пользователь решил продолжить мысль 13 Января 2014, 23:20:23:
Так кто-нибудь поможет?

Может вывести какой либо лог для анализа.
« Последнее редактирование: 13 Января 2014, 23:20:23 от ibadly »

Оффлайн Vexare

  • Любитель
  • *
  • Сообщений: 64
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #1 : 16 Января 2014, 01:07:21 »
Мод то включен, он будет считывать, но надо чтобы их увидел сам апач(файлики .htaccess).
Проверь есть ли у тебя строчки в папке /etc/apache2/sites-enabled
В yourdomain.conf прописано:
allow from all
Options +Indexes
И ребут апача.

И надо, чтобы, в файле .htaccess было примерно такое начало:
AddDefaultCharset utf-8   # Это кодировка.
DirectoryIndex index.php # Редирект на index.php

RewriteEngine on # Включение самого мода.

Дальше уже
<>
...
</>

Тот файл у тебя для примера, как можно сделать шапку файла... Я дал пример своей шапки. (.htaccess)
« Последнее редактирование: 16 Января 2014, 01:10:47 от Vexare »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #2 : 16 Января 2014, 16:22:28 »
Мод то включен, он будет считывать, но надо чтобы их увидел сам апач(файлики .htaccess).
Проверь есть ли у тебя строчки в папке /etc/apache2/sites-enabled
В yourdomain.conf прописано:
allow from all
Options +Indexes
Вообще-то AllowOverride, а не Allow.
И если нет соответствующей AllowOverride при чтении инструкций из .htaccess, сайт в 500 свалится в предположении, что его хакнуть пытаются.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ibadly

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #3 : 18 Января 2014, 13:42:16 »

Вообще-то AllowOverride, а не Allow.
И если нет соответствующей AllowOverride при чтении инструкций из .htaccess, сайт в 500 свалится в предположении, что его хакнуть пытаются.


При таком изменении:

Ошибка при запуске apache :

 * Starting web server apache2
 *
 * The apache2 configtest failed.
Output of config test was:
AH00526: Syntax error on line 5 of /etc/apache2/sites-enabled/yupe.conf:
Illegal override option from
Action 'configtest' failed.
The Apache error log may have more information.

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

<VirtualHost *:80>
DocumentRoot "/var/a/yupe"
ServerName yupe
<Directory "/var/a/yupe">
allow from all
Options +Indexes
</Directory>
</VirtualHost>

Еще есть ньюанс "/var/a/" это симлинк

вышеупомянутый .htaccess находиться не в корне сайта в подпапке public

Пользователь решил продолжить мысль 18 Января 2014, 13:47:12:
DirectoryIndex index.php # Редирект на index.php


Такой строчки нет. но этот файлик .htaccess то что по умолчанию идет в CMS "YUPE" и такая проблема только у меня. В теории он работаспособен.
« Последнее редактирование: 18 Января 2014, 13:47:12 от ibadly »

Оффлайн Henryh

  • Активист
  • *
  • Сообщений: 428
    • Просмотр профиля
    • henrydev.ru
Re: Не работает mod_rewrite у apache
« Ответ #4 : 18 Января 2014, 15:25:05 »
ibadly, у вас слишком много тонких моментов, где может быть проблема. Рекомендую для уточнения ошибки использовать более простой пример. Создайте хост с одним файлом index.html и файлом rewr.html и попробуйте через .htaccess перебросить пользователя с одного на другой. В виртуальном хосте тоже всё лишнее уберите, оставьте только включение переадресации и лог. Возможно, вы сразу сможете выявить где проблема.
Автоматизируй это

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #5 : 19 Января 2014, 01:36:40 »
ibadly, при каком "таком" изменении?
Симлинки в апаче запрещены, слишком сложно обеспечить безопасность сайта, когда его линкуют туда-сюда.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн ibadly

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #6 : 24 Января 2014, 00:24:34 »
ibadly, у вас слишком много тонких моментов, где может быть проблема. Рекомендую для уточнения ошибки использовать более простой пример. Создайте хост с одним файлом index.html и файлом rewr.html и попробуйте через .htaccess перебросить пользователя с одного на другой. В виртуальном хосте тоже всё лишнее уберите, оставьте только включение переадресации и лог. Возможно, вы сразу сможете выявить где проблема.

Создал с нуля новый вирт хост с настройками по умолчанию при помощи вебмина.
(до переустановки ubunt ы  в таком комплекте все работало)

засунул в корень 2 файла index.php другой index2.php  оба выводят на экран index и index2 чтобы понять что отображается.

проверил: просто без указания файла по умолчанию вывел index.php что и ожидалось

прямое обращение к обоим файлам -> все ок

добавил .htaccess с таким содержимом:
redirect index.php index2.phpпри обращении к index.php как понимаю должно перекинуть на index2.php

но этого не происходит -> как я думаю .htaccess не обрабатывается ????!!!!!

Куда копать???

в /etc/apache2/apache2.conf строчка "AccessFileName .htaccess" раскомментированна !!!

ниже присутствует
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>



Пользователь решил продолжить мысль 24 Января 2014, 00:27:47:
ibadly, при каком "таком" изменении?
Симлинки в апаче запрещены, слишком сложно обеспечить безопасность сайта, когда его линкуют туда-сюда.

Если поменять Allow на AllowOverride то хост полностью вешается.

А симлинк до этого прекрастно работал на другом компе.
На рабочей машинке симлинков нет.
Я пытаюсь копию сделать на ноуте чтобы эксперементировать с глобальными изменениями на ноуте а не на рабочем серваке.
« Последнее редактирование: 24 Января 2014, 00:46:51 от ibadly »

Оффлайн Karl500

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2267
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #7 : 24 Января 2014, 08:29:00 »
allow from all

и

AllowOverride all

это разные команды. И предназначены для разного. Прочтите, наконец, документацию.
« Последнее редактирование: 24 Января 2014, 11:43:05 от Karl500 »

Оффлайн ibadly

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #8 : 24 Января 2014, 23:15:31 »
allow from all

и

AllowOverride all

это разные команды. И предназначены для разного. Прочтите, наконец, документацию.

Спасибо за помощь всем.
Заработало.

просто товарищь AnrDaemon правильно подсказал.

Учитывая мою малограмотность я просто заменил слово Allow  на AllowOverride

вот и клинило.

А многоуважаемый Karl500 разжевал для меня подробнее и сработало.

Спасибо всем.


Проблема что апач игнарирует .htaccess видимо
« Последнее редактирование: 24 Января 2014, 23:22:49 от ibadly »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #9 : 25 Января 2014, 02:12:30 »
Это всё настраивается. И всё описано в документации.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #10 : 26 Марта 2015, 23:18:53 »
Простите, как ваш вопрос относсится к теме топика? Никак? СОЗДАЙТЕ НОВЫЙ ТОПИК И ТАМ ЗАДАВАЙТЕ ВОПРОС.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн krog

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Не работает mod_rewrite у apache
« Ответ #11 : 27 Марта 2015, 08:55:32 »
Простите, как ваш вопрос относсится к теме топика? Никак? СОЗДАЙТЕ НОВЫЙ ТОПИК И ТАМ ЗАДАВАЙТЕ ВОПРОС.
Щас создам, не психуй. Если уж на то пошло, как твой ответ относится к теме топика?

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.