Forum Webscript.Ru
Программирование => PHP => Тема начата: 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 файл или папка с таким именем???
надеюсь не слишком запутанно написал
-
RewriteRule ^hostname/(.*) /site/$1
-
Попробуй так:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php
[QSA,L]
-
Daiz13
объясни, пожалуйста что за флаг
[QSA,L]
сколько не читал так и не понял
-
А если так:
(Не везде подайдет но ...)
# Если запрашивался 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)
-
сделал вот так:
вроде работает, проверил под виндой у себя дома. и на хостинге
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]