Forum Webscript.Ru

Программирование => PHP => Тема начата: Jean от 30 Июля 2004, 12:33:11

Название: проблема с mod_rewrite
Отправлено: Jean от 30 Июля 2004, 12:33:11
помогите пожалуйста разобраться.

допустим я хочу все что не явл файлом или директорией перенаправлять на index.php то тогда я напишу

такое правило в .htaccess :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]

например,  у меня такая структура папок в корневой директории сервера

/index.php
/folder/test.html
/site/main.html
/site/logo.gif

если я в браузере напишу hostname/fgsdfsdfs
то .htaccess перенаправит меня на /index.php

если напишу hostname/folder/test.html
то получу /folder/test.html

а если я хочу чтобы при вводе hostname/main.html
или hostname/logo.gif
запрос перенаправлялся на /site/main.html, /site/logo.gif соответственно

в общем как проверять не только файлы и папки с таким именем, но и проверять есть ли в папке site файл или папка с таким именем???

надеюсь не слишком запутанно написал
Название: проблема с mod_rewrite
Отправлено: Croaker от 30 Июля 2004, 15:04:57

RewriteRule ^hostname/(.*) /site/$1
Название: проблема с mod_rewrite
Отправлено: Daiz13 от 02 Августа 2004, 11:45:34
Попробуй так:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php
[QSA,L]
Название: проблема с mod_rewrite
Отправлено: Jean от 02 Августа 2004, 11:53:23
Daiz13

объясни, пожалуйста что за флаг
[QSA,L]

сколько не читал так и не понял
Название: проблема с mod_rewrite
Отправлено: sublimity от 05 Августа 2004, 13:02:12
А если так:
(Не везде подайдет но ...)
 # Если запрашивался index.php то и переходим на него
 RewriteRule ^index.php - [L]

 #Проверка существования файла
 RewriteCond   %{REQUEST_FILENAME} -f

 # Если существует делаем редирект
 # RewriteRule   (.*)$ %{REQUEST_FILENAME} [L]
 RewriteRule (.*)$ $1 [L]

 # Если файл НЕ существует то переходим на index.php
 RewriteRule (.*)$ /index.php [L]

[L] - "последнее правило"
-f  - Проверка существования файла ....

Посматри это , может спасет
http://httpd.apache.org/docs/mod/mod_rewrite.html (http://httpd.apache.org/docs/mod/mod_rewrite.html)

http://sitemaker.ru/technologies/webserver/mod_rewrite3/ (http://sitemaker.ru/technologies/webserver/mod_rewrite3/)
 И если не видел это то тогда обязательно сюда Ж-)
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html (http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html)
Название: проблема с mod_rewrite
Отправлено: Jean от 05 Августа 2004, 13:13:42
сделал вот так:
вроде работает, проверил под виндой у себя дома. и на хостинге

Options +FollowSymlinks

RewriteEngine on

#дописывать /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule    ^(.*[^/])$  $1  [L]

#проверять такие же файлы в папке cache
# то есть например проверить существование файла /logo.gif/4111ed75cb72c
RewriteCond       c:/localhost/flexcubes/cache%{REQUEST_URI}/4111ed75cb72c  -f
RewriteRule  .*   /flexcubes/cache%{REQUEST_URI}/4111ed75cb72c  [L]

#все остальное на index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /flexcubes/index.php5 [L]