| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование Web серверов и Web служб > mod_rewrite Нужное каждому. |
| Автор: Всемогущий 10.5.2007, 06:45 |
| Обсуждение моей проблемы я видел во многих местах,но нигде не было нормального ответа. нужно: есть папка с файлами и папками, если идёт обращение к существующему файлу то тогда переадресовываем запрос на index.php в этой папке RewriteRule ^.*$ /index.php?%{REQUEST_URI} и второе правило: если обращаются к поддеректории либо к файлу в поддиректории то mod_rewrite ничего не делает. Надеюсь на вашу помощь. |
| Автор: Daevaorn 10.5.2007, 09:17 |
| А документацию почитать лень? |
| Автор: Всемогущий 10.5.2007, 15:50 |
а по уважительнее нельзя? |
| Автор: Сумасшедший 10.5.2007, 18:32 |
| Уважаемый Всемогущий, а не соизволите ли Вы обратить свой взор с вершин блаженно-халявных к делам насущным и усладить свой взор небольшим отрывком из документации по mod_rewrite, который утолит Вашу жажду познаний и поможет решить вечный вопрос "ктобы сделал за меня"? |
| Автор: xolod 10.5.2007, 21:43 |
| Первый линк по запросу "mod_rewrite" в русскоязычном Гугле (и в Яндексе, кстати, тоже) указывает на http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html. Если его вдумчиво прочитать, особенно раздел про RewriteCond, все должно встать на места. Давать линки на англоязычные ресурсы с расширенным материалом специально не стал, пониманию это явно не поспособствует. |
| Автор: Всемогущий 10.5.2007, 23:47 |
| это всё конечно здорово, примерно такие ответы я видел везде ,куда меня приводил поиск эти сайты я уже видел, раз это так просто,так напишите пожалуйста эти 4 строки p.s мне это нужно для напсания статьи для винграда |
| Автор: Alexey007 11.5.2007, 20:14 |
| Представляете, мне тоже это нужно(для моего движка). Читал документацию, вроде всё понял, но... Пожалуйста объясните на русском |
| Автор: xolod 12.5.2007, 12:43 | ||
Хорошо, давайте попробуем разобраться. Объясните на пальцах, что вы хотите. Потому как с моей и ворда точек зрения
предложение не согласовано. Попробую предположить: если обращение происходит к файлу в корне сайта, переадресовываем на index.php в корне сайта. Если обращение глубже корня, то ничего не делаем. Так? |
| Автор: Всемогущий 12.5.2007, 16:43 |
| да,и если обращение к index.php тоже ничего не делаем |
| Автор: GZep 12.5.2007, 17:42 |
| Я правильно понимаю: если обращение идет на папку (например: some.ru/news/) то надо, чтобы был произведен редирект на index.php (например: some.ru/news/index.php) ??? |
| Автор: Всемогущий 12.5.2007, 18:01 |
| не принципиально ,пусть ничего не происходит. |
| Автор: GZep 12.5.2007, 18:21 |
| Всемогущий, так что делать? какой неявный редирект? чтобы правильно задать вопрос, надо знать хотябы половину ответа(с). Не все знают половину ответа на свои вопросы. |
| Автор: Всемогущий 12.5.2007, 18:24 | ||
именно так |
| Автор: GZep 12.5.2007, 18:58 |
| а это не mod_rewrite делает. На сколько я понял должно помочь вот это: http://htaccess.net.ru/doc/htaccess/directoryIndex.php. |
| Автор: Всемогущий 12.5.2007, 19:12 |
| мне кажется не то ,так как нужно http://site.ru/somefile.ext(любой файл в корне) стало http://site.ru/index.php?file=somefile.ext а если что угодно находится находится глубже корня ничего не происходит http://site.ru/*****/somefile.ext - ничего |
| Автор: GZep 12.5.2007, 19:23 | ||||
| усе, понял. Делаем: важное замечание: если так делать то надо снять обязательно редирект с файла index.php. Если не сделать, то будет происхоить следующее: запрос к файлу /news.php выполняется редирект к файлу index.php вот так: /index.php?file=news.php НО редирект не останавливается и идет дальше(мы же теперь обращаемся к index.php): /index.php?file=index.php&file=news.php и так далее: /index.php?file=index.php&file=index.php&file=news.php пока сервер не зависнет... Это надо учитывать и сделать игнор файлу index.php (делаем это при помощи RewriteCond %{REQUEST_FILENAME} !-f) Итого имеем:
флаги дают возможность контролировать данные после "?" и не учитывать регистр символов.(какой из них что именно делает сейчас не помню). Теперь папки (в этом я не уверен!) там вроде надо просто:
Усе! |
| Автор: Всемогущий 12.5.2007, 19:43 |
| http://www.gazetron.ru/del/ нажимаю на файл ничего не происходит кажется ошибка здесь : RewriteCond %{REQUEST_FILENAME} !-f #не файл мне же нужно было чтоб он Жрал все файлы, а если поставить RewriteCond %{REQUEST_FILENAME} -f #любой файл то он обрабатывает файлы не только в корне ,но и везде |
| Автор: xolod 12.5.2007, 23:23 | ||
В файл .htaccess в корне сайта. В httpd.conf %{VARIABLE} использовать можно не всегда. |
| Автор: Всемогущий 13.5.2007, 06:43 | ||
| я до сих пор легко получаю доступ к файлам которые лежат рядом с index.php http://gazetron.ru/del/rewrite.txt где же
|
| Автор: GZep 13.5.2007, 09:32 |
прочитай замечание, которое я написал в предыдушем своем посте. Вниматьльно только прочитай. Все файлы он жрать не должен. Добавлено через 1 минуту и 57 секунд чуть попозже освобожусь и посмотрю, что там не работает. |
| Автор: Всемогущий 13.5.2007, 11:15 |
Должен,только в корне. |
| Автор: xolod 13.5.2007, 15:00 |
| Кажется мы с вами не понимаем друг друга. Воссоздайте структуру на своем сервере, такую как в архиве (просто распокавав архив в корень сервера, лучше если там ничего больше не будет, для чистоты эксперимента). Там есть файлы в корне (file.html, twofile.txt) и папка dir с файлами. Попробуйте открыть каждый из них в браузере. Структура должна быть воссоздана от корня (DOCUMENT_ROOT, htdocs, etc), а не в какой-либо поддиректории. |
| Автор: Всемогущий 13.5.2007, 15:21 | ||
ссылка таже, просто скопировал всё туда. мне тоже кажется, наверное правда бывают затмения разума,во избежания затмения у меня, повторяю задание 1)правило: если запрошен существующий файл на сервере то передавать его имя ,в качестве параметра переменной,на index.php 2)исключение: если запрашиваемый файл находится глубже корня - ничего не делать |
| Автор: GZep 13.5.2007, 18:12 |
Хорошо. Значит файл index.php он тоже должен перенаправлять. правильно? Или все-таки не должен ВСЕ обрабатывать? |
| Автор: Всемогущий 13.5.2007, 18:26 | ||
я это читал, предпологается что тот кто будет делать это учтёт. |
| Автор: GZep 13.5.2007, 18:32 |
в последней строчки цитаты я написАл про то как будет это делаться. Добавлено через 5 минут и 20 секунд чуть не забыл: для того, чтобы мой код работал надо чтобы небыло файлов в корне кроме index.php на которые моглибы быть обращения. например если файла news.php в корне нет, то переделывается на index.php?file=news. Но если в корне есть файл news.php - редирект непроисходит. |
| Автор: Всемогущий 13.5.2007, 18:42 | ||
их сотни |
| Автор: GZep 13.5.2007, 20:50 |
к ним непосредственно браузер обращается? то есть, например, css или js файлы вообще не мешают. главное, чтобы не было файлов типа news.php. |
| Автор: Всемогущий 13.5.2007, 21:11 |
| какая разница css или js или ещё что нибудь любые файлы кроме index.php |
| Автор: GZep 14.5.2007, 13:55 |
| Всемогущий, я про разницу уже написАл. Пожалуйста, прочитай внимательней и вникни в проблему с этими файлами. |
| Автор: Всемогущий 14.5.2007, 15:19 |
| я написал какая разница в том смысле что все файлы должны подподать под правило:если файл не находится в поддиректории,и не является index.php то должно происходить перенаправление на index.php ,а переменная {REQUEST_FILENAME} должна передаваться как ?file= {REQUEST_FILENAME} |
| Автор: xolod 14.5.2007, 15:43 | ||
| Если вы помещаете файл не в корень, а поддиректорию, вам соответственно нужно изменять .htaccess. Например я поместил архив и прошлого поста в директорию vingrad_htaccess и соотв. изменил .htaccess-файл.
Вам для другой директории тоже нужно будет изменить его, обяснять как, думаю не нужно :-). А лучше поставьте дома сервер, потестируйте у себя от корня, чтобы понять как оно работает. Не дастся эта статья вам без драки, надо было сначала основательно изучить доку по mod_rewrite. |
| Автор: Всемогущий 14.5.2007, 16:26 |
| Статья не про mod_rewrite. До меня дошло: если перефразировать правило: находится глубже корня это значит имя содержит слеш. :( |
| Автор: Всемогущий 14.5.2007, 16:45 |
| как я понял идея не сбыточная |
| Автор: GZep 14.5.2007, 19:22 |
| к сожалению такое бывает... |