192.168.0.134/index.php/fast/one - работает как надо
192.168.0.134/fast/one - выпадает 404
Apache2 Virtual Host config + mod_rewrite
Есть сервер (ubuntu64, Apache2+php5+mysql). в локалке имеет IP 192.168.0.134
ЗАДАЧИ:
1.) Любые REQUEST_URI, будь то запрос файла или папки, обрабатывать только в index.php.
2.) Реализовать ЧПУ без index.php.
После чтения документации ни к чему не пришел. Например с другой машины в браузере перехожу
Код:
.htaccess
Код:
RewriteEngine on
RewriteRule ^(.*)$ index.php
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>
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?
Ткните пальцем что и где надо исправить, спасибо всем заранее.
Флаг [R] попробуйте
Цитата: Phodopus
Других RewriteRule нет?
Флаг [R] попробуйте
Флаг [R] попробуйте
Дело в том что после того как /etc/apache2/sites-available/default стал таким как он представлен выше, выскакивает ошибка 500 Internal Server Error, то есть не удается пока проверить действие флага [R]. Других RewriteRule нет. Как правильно оформить /etc/apache2/sites-available/default?
Цитата: s4urp8n
Дело в том что после того как /etc/apache2/sites-available/default стал таким как он представлен выше, выскакивает ошибка 500 Internal Server Error, то есть не удается пока проверить действие флага [R]. Других RewriteRule нет. Как правильно оформить /etc/apache2/sites-available/default?
Если есть ошибка 500, значит есть соответствующая запись в логах. Ее и смотри.
Код:
<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>
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 тот же самый (см. выше)
В чём проблема?
Решение, так и не найдено(
http://webew.ru/articles/2291.webew
Вкратце, регулярка там: .*?
Может быть стоит попробовать её?
Цитата:
RewriteRule .*? index.php
Код:
192.168.0.134/index.php/fast/one + отображается fast/one
192.168.0.134 + отображается index.php
192.168.0.134/fast/one - по прежнему 404
192.168.0.134 + отображается index.php
192.168.0.134/fast/one - по прежнему 404
хз, как релизовать(
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]
средние 2 строчки говорят, что на существующие файлы редиректить не надо..
а ключевое - указать RewriteBase
Цитата: Mr.Hacker
может стоит попробовать
средние 2 строчки говорят, что на существующие файлы редиректить не надо..
а ключевое - указать RewriteBase
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT]
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
192.168.0.134 + отображается index.php
192.168.0.134/fast/one - по прежнему 404
или вообще все Options что есть
RewriteRule ^(.*)$ /index.php [L]
а лучше так:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]
/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>
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]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]