Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Apache2 Virtual Host config + mod_rewrite

73K
24 августа 2011 года
s4urp8n
8 / / 24.08.2011
Привет всем!

Есть сервер (ubuntu64, Apache2+php5+mysql). в локалке имеет IP 192.168.0.134

ЗАДАЧИ:

1.) Любые REQUEST_URI, будь то запрос файла или папки, обрабатывать только в index.php.

2.) Реализовать ЧПУ без index.php.

После чтения документации ни к чему не пришел. Например с другой машины в браузере перехожу
 
Код:
192.168.0.134/index.php/fast/one   - работает как надо
192.168.0.134/fast/one - выпадает 404


.htaccess
 
Код:
RewriteEngine on
RewriteRule ^(.*)$ index.php

Также нахимичил в /etc/apache2/sites-available/default

default
Код:
<VirtualHost *:80>
ServerName localhost
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www>
Options -Indexes FollowSymLinks Multiviews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel debug
CustomLog /var/log/apache2/access.log combined
</VirtualHost>


Хост (сайт) на сервере будет крутиться один.

Как правильно настроить apache2, чтобы при вызове на других машинах 192.168.0.134/fast/one и 192.168.0.134/index.php/fast/one выдавали одинаковый результат, т.е. вызывали index.php?

Ткните пальцем что и где надо исправить, спасибо всем заранее.
14
25 августа 2011 года
Phodopus
3.3K / / 19.06.2008
Других RewriteRule нет?
Флаг [R] попробуйте
73K
25 августа 2011 года
s4urp8n
8 / / 24.08.2011
Цитата: Phodopus
Других RewriteRule нет?
Флаг [R] попробуйте



Дело в том что после того как /etc/apache2/sites-available/default стал таким как он представлен выше, выскакивает ошибка 500 Internal Server Error, то есть не удается пока проверить действие флага [R]. Других RewriteRule нет. Как правильно оформить /etc/apache2/sites-available/default?

4
25 августа 2011 года
mike
3.7K / / 01.10.2002
Цитата: s4urp8n
Дело в том что после того как /etc/apache2/sites-available/default стал таким как он представлен выше, выскакивает ошибка 500 Internal Server Error, то есть не удается пока проверить действие флага [R]. Других RewriteRule нет. Как правильно оформить /etc/apache2/sites-available/default?



Если есть ошибка 500, значит есть соответствующая запись в логах. Ее и смотри.

73K
25 августа 2011 года
s4urp8n
8 / / 24.08.2011
Заменил /etc/apache2/sites-available/default содержание на содержание по умолчанию:

Код:
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>


Ошибки 500 нет, флаг [R] не помогает сделать перенаправление 192.168.0.134/fast/one, только с 192.168.0.134/index.php/fast/one

.htaccess тот же самый (см. выше)

В чём проблема?
73K
26 августа 2011 года
s4urp8n
8 / / 24.08.2011
Решение, так и не найдено(
7.2K
27 августа 2011 года
polaroid
94 / / 05.07.2008
Вот вроде статья об этом:
http://webew.ru/articles/2291.webew
Вкратце, регулярка там: .*?
Может быть стоит попробовать её?
Цитата:
RewriteRule .*? index.php

73K
29 августа 2011 года
s4urp8n
8 / / 24.08.2011
Не помогло, т.е. :
 
Код:
192.168.0.134/index.php/fast/one + отображается fast/one
192.168.0.134 + отображается index.php

192.168.0.134/fast/one - по прежнему 404
73K
06 сентября 2011 года
s4urp8n
8 / / 24.08.2011
хз, как релизовать(
271
07 сентября 2011 года
MrXaK
721 / / 31.12.2002
может стоит попробовать
 
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]

средние 2 строчки говорят, что на существующие файлы редиректить не надо..
а ключевое - указать RewriteBase
73K
08 сентября 2011 года
s4urp8n
8 / / 24.08.2011
Цитата: Mr.Hacker
может стоит попробовать
 
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]

средние 2 строчки говорят, что на существующие файлы редиректить не надо..
а ключевое - указать RewriteBase



Пробовал и этот, и другие варианты с параметрами, результат всё тот же :

 
Код:
192.168.0.134/index.php/fast/one + отображается fast/one
192.168.0.134 + отображается index.php

192.168.0.134/fast/one - по прежнему 404
271
08 сентября 2011 года
MrXaK
721 / / 31.12.2002
тогда, возможно, стоит убрать Options FollowSymLinks в sites-available
или вообще все Options что есть
20K
08 сентября 2011 года
Finder
37 / / 06.05.2007
RewriteEngine On
RewriteRule ^(.*)$ /index.php [L]

а лучше так:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]
73K
09 сентября 2011 года
s4urp8n
8 / / 24.08.2011
:cool: ДА! Всё заработало! Огромное спасибо!

/etc/apache2/sites-available/default

Код:
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory />
                AllowOverride All
        </Directory>
        <Directory /var/www/>
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log

        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>


/var/www/.htaccess

 
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог