Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: mod_rewrite: файл сделать папкой
Я хочу, чтобы он был доступен по адресу http://site[dot]ru/file и http://site.ru/file/, что будет подобно вызову index.php из какой-то папки. Казалось бы, всё просто:
Сервер возвращает 500 ошибку Internal Server Error. Узнал, что это говорит об ошибке в синтаксисе .htaccess. Сижу и думаю, каково, собственно? Я понимаю вышенаписанный код так:
Вызываю http://site.ru/file. Берётся правая часть после / - то есть file. Под регулярку она подходит. Подставляется в шаблон замены - file.php и сервер обратится к этому файлу.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Yuriy пишет:
Что будет подобно вызову index.php из какой-то папки. Казалось бы, всё просто
Судя по вашему коду вы вызываете не index.php с соответствующим параметром указывающий на идентификатор страницы а просто добавляете расширения php к запрошенному ресурсу Вероятно стоит заменить шаблон на подобный такому RewriteRule ^(.*)/$ index.php?page=$1 и добавить условие RewriteCond чтобы сам index.php не трогало
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Ch_chov
Отправлено: 05 Февраля, 2010 - 06:31:35
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
JustUserR пишет:
Судя по вашему коду вы вызываете не index.php с соответствующим параметром указывающий на идентификатор страницы а просто добавляете расширения php к запрошенному ресурсу
Ну в общем-то да. Если ввести site.ru/file, site.ru/file1/ сервер должен обратиться к файлам file.php и file1.php.
Ch_chov, спасибо! То что нужно
----- Yuriy
Yuriy
Отправлено: 05 Февраля, 2010 - 13:53:50
Частый гость
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
И ещё вопрос, связанный с предыдущим. Вот я из файлов сделал "папки". Теперь я хочу, чтобы пользователь не умничал и не смог вызвать в браузере файл вот так:
site.ru/file.php, а только так: site.ru/file
Сейчас же эти оба варианта равнозначны и рабочие.
Просто как бы скрыть факт, что я пользуюсь php Я этого не стыжусь, не переживайте Просто хочу так сделать.
но если вызвать site.ru/file, то сервер выдаст 404 ошибку... Скушает правило, написанное мною выше. А как же сделать, чтобы работало правило, которое я изначально затронул в теме (код, который подсказал Ch_chov), и вот это?
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
Ch_chov пишет:
Попробуй так:
Попробовал. Если зайти на главную страницу сайта - будет 404.
Ch_chov пишет:
Или можно в каждом php скрипте проверять $_SERVER['QUERY_STRING'] выдавать ошибку 404 если там присутствует '.php'
А ведь действительно... По сути, код из .htaccess делает тоже самое, только ещё и зря гонится бедный Apache. Наверное, лучше так и поступлю!
Всем спасибо!!!
----- Yuriy
JustUserR
Отправлено: 06 Февраля, 2010 - 02:02:44
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Yuriy пишет:
Просто как бы скрыть факт, что я пользуюсь php
На самом деле это можно сделать без всякого модуля mod_rewrite - в таком случае решение будет зависить от того работает ли у вас PHP в виде обработки файлов с определенным MIME-типом или в виде CGI-скрипта (НЕ путать с установкой самого PHP в виде CGI
К примеру можно воспользоваться модулем mime_magic и определить PHP файлы за счет тега <?php или заранее оговоренной строки в самом начале файла В общем же случае можно установить MIME-типа application/x-httpd-php по умолчанию для всех файлов или файлов с именами по определенному шаблону в каталоге и тогда расширения .php будет не нужно
Для обычных CGI-скритпов есть похожая схема их запуска без определение определенного расширения или специальной папки для них
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Yuriy
Отправлено: 06 Февраля, 2010 - 14:54:40
Частый гость
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
JustUserR пишет:
В общем же случае можно установить MIME-типа application/x-httpd-php по умолчанию для всех файлов или файлов с именами по определенному шаблону в каталоге и тогда расширения .php будет не нужно
Я так изначально сделал и мои php файлы имели расширение html. Но понял, зачем извращаться и всё сделал по известной схеме, которую я уже в этой теме и описал
Спасибо за советы, в будущем наверняка мне эта информация пригодится!
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Yuriy пишет:
Спасибо за советы, в будущем наверняка мне эта информация пригодится!
Пожалуйста! Лично мне кажется что данный способ является более удобным - ведь mod_rewrite только скрывает адреса а данный подход позволяет реально запускать файлы с различным MIME-типом соответствующим образом без указания расширений файлов
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Yuriy
Отправлено: 07 Февраля, 2010 - 01:13:55
Частый гость
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
Ну хорошо. Только как мне с этим работать?
----- Yuriy
JustUserR
Отправлено: 07 Февраля, 2010 - 03:29:25
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Yuriy пишет:
Ну хорошо. Только как мне с этим работать?
В смысле как работать - если вы про настройку то необходимые параметры легко устанавливаются через .htaccess - а в остальном файлы без расширений полностью эквивалентны с расширениями (При этом они могут идентифицироваться по какому-то шаблону - а что касается CGI-скриптов то там все по-прежнему
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Yuriy
Отправлено: 07 Февраля, 2010 - 12:59:50
Частый гость
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
JustUserR пишет:
то необходимые параметры легко устанавливаются через .htaccess
Да, меня это интересует. Можно попросить пример?
----- Yuriy
JustUserR
Отправлено: 07 Февраля, 2010 - 14:44:53
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Yuriy пишет:
Да, меня это интересует. Можно попросить пример?
Можно
Таким образом устанавливается обработка PHP для всех файлов в данной директории где лежит .htaccess - вместо * можно задать шаблон имени файлов
И конечно же в случае CGI-скриптов не забывать про права доступа
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.