В .htaccess протисал: RewriteEngine on RewriteRule ^.*$ index.php Т.е. какой бы адрес в адресной строке не набрать, все время будет перенаправлять на index.php. Это надо мне для того, что бы, контролировать URI через php-скрипт. Но дело в том, что на некоторые пути мне надо снять перенаправление на index.php. Т.е. что бы на определенные пути перенаправления не было. Например, на пути когда приложение первый раз устанавливается. Вот они: http://site/setup/step1.php http://site/setup/step2.php http://site/setup/step3.php Как мне регулярное выражение переписать. Что надо сделать?
можно так написать Код (Text): RewriteCond %{REQUEST_FILENAME} !-f если запрашивается существующий файл, то именно он будет открыт
Код (Text): Options +FollowSymLinks +ExecCGI <IfModule mod_rewrite.c> RewriteEngine On # uncomment the following line, if you are having trouble # getting no_script_name to work #RewriteBase / # we skip all files with .something #RewriteCond %{REQUEST_URI} \..+$ #RewriteCond %{REQUEST_URI} !\.html$ #RewriteRule .* - [L] # we check if the .html version is here (caching) RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f # no, so we redirect to our front web controller RewriteRule ^(.*)$ index.php [QSA,L] </IfModule> Не поверишь но у меня все прекрасно работает) Лишнее вырежи, тебе оно не надо)
Спасибо, действительно работает. Вот как выглядит .htaccess в данный момент: RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^.*$ index.php Но, дело в том, что мне нужен доступ разрешить только к файлам установки. Например к файлам классов с расширениями .inc, .conf и др. надо запретить. У меня же сейчас получается что можно открыть любой существующий файл. Как мне поставить запрет на все остальные файлы помимо тех, которые мне нужны.
А ты их спрячь в другую директорию) и на нее запрети доступ.Либо используй точку как первый символ в имени файла(такой файл браузер не отдаст)
Хм. А можно сделать так, что бы только определенные файлы загружались. У меня их всего три. То есть, не на существующие файлы вообще, а только на существующие определенные файлы?
Почитал документацию немного и переписал вот так: RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !^.*/setup/step[1-3]\.php$ RewriteRule ^.*$ index.php Вроде работает. Как думаете, нет тут подводных камней? И у регулярного выражения нет изъянов?
Самое интересное - css-файл не загружает, без стилей отображаются странички установки. Почему это так происходит?
Я сейчас вот так переписал: RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !^.*/setup/.+$ RewriteRule ^.*$ index.php Вроде, работает нормально.