PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 8
senneco Отправлено: 18 Марта, 2009 - 19:45:15 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
А, всё, понял ) Я обработал просто его пост так, как я бы хотел его услышать, а не так, как надо.
senneco Отправлено: 17 Марта, 2009 - 19:11:13 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
Champion пишет:
А если
CODE (text):
скопировать код в буфер обмена
  1. <Files "php$">
  2. order allow,deny
  3. deny from all
  4. </Files>
  5. <Files index.php>
  6. order allow,deny
  7. allow from all
  8. </Files>

Такое не прокатило. По идее же <Files "php$"> означает, что "применить ко всем фалам с маской ...". Но у меня почему-то совсем не хотело работать ни эта маска, ни какая другая. Методом тыка написал-таки
CODE (text):
скопировать код в буфер обмена
  1. <Files *.php>
  2. deny from all
  3. </Files>
  4.  

и оно ожило!)

Спасибо большое за помощь )

Но всё-таки хотелось бы узнать, как выполнить правило только в том случае, если ни одно другое не подошло.
senneco Отправлено: 17 Марта, 2009 - 12:09:45 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
Champion пишет:
Во-первых что за if-else-else.

Табуляция не отобразилась - если "приглядеться", то можно увидеть вложенность условий
Champion пишет:
Запрети все файлы, кроме index.php, как я написал предыдущим постом

Да, это было бы решением моей проблемы. Только не получается сделать так, что бы блочились все файлы кроме index.php.
valenok пишет:
немного не в тему, но как выполнить правило если не одно не подошло

Это, наверно, как раз то, что мне нужно ) Пробовал добалять к концу каждого правила [L] - не помогает, к сожалению.
senneco Отправлено: 17 Марта, 2009 - 07:43:04 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
Champion пишет:
Попробуй объяснить еще раз сначала вот так:
-пользователь ввел такое - получил такое;
-пользователь ввел такое - получил такое;

Вот чётко то, что мне надо:

У меня есть файл index.php примерно следующего содержания:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. if (array_key_exists("action", $_GET))
  3. {
  4.     if ($_GET['action'] == "aaa")
  5.         include_once("aaa.php");
  6.     else
  7.         include_once("bbb.php");
  8. }
  9. else
  10. {
  11.     include_once("ccc.php")
  12. }
  13.  


И когда пользователь вводит адрес http://site[dot]com/aaa mod_rewrite перенаправлял его соответственно на http://site[dot]com/index.php?action=aaa . А если пользователь открывает http://site[dot]com/aaa.php ( или http://site[dot]com/bbb.php или http://site[dot]com/ссс.php или http://site[dot]com/index.php - не важно), то выполнять скрипт error.php, который выводит сообщение, что страница не найдена.
Ещё пробовал сделать так:
Последнее правило в .htaccess такое, что если в адресе присутствует .php, то выполнить какой-то скрипт, например error.php, но в таком случае, даже если введённый адрес подходил под предыдущие правила, а под это нет, то всё равно выполнялся этот скрипт error.php .

Можно выявить другую подзадачу: если в адресе написано .php, тогда выполнить error.php , иначе уже смотреть под какое правило подходит адрес
senneco Отправлено: 16 Марта, 2009 - 11:43:54 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
Champion пишет:
Это праильно, но [\w] означает любой из 2 символов \ или w.

А может нужно заэкранировать \, что бы получилось именно "любой из двуз символов \ и w"(типа \\w)? Или я совсем не понял регулякри?)

Champion пишет:
Ты и не будешь его обманывать, ему просто откроется ааа.php. Ну и к последней строчке можешь добавить остальные 2 твоих

Так если написать
CODE (text):
скопировать код в буфер обмена
  1. ErrorDocument 404 /aaa.php
  2. RewriteEngine on
  3. RewriteRule ^(\w+)/(\w+)/(\w+)$ index.php?action=$1&item=$2&id=$3
  4.  

, то получится, что если страница не найдена, тогда открыть aaa.php. А мне нужно наоборот - чтобы если ввели aaa.php, то сказать, что файл не найден, хотя на самом деле aaa.php существует.

P.S.: Посмотрел на свой первый пост, и мне сайчас кажется, что я неправильно сформулировал вопрос, извиняюсь
senneco Отправлено: 16 Марта, 2009 - 03:45:06 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
Champion пишет:
Во-первых, что ты хочешь сказать [\w] вот этим? А во-вторых, в твоем случае, по-моему можно aaa.php выдавать на 404 ошибку. И всё будет как тебе надо:
CODE (text):
скопировать код в буфер обмена
  1. ErrorDocument 404 /aaa.php
  2. RewriteEngine on
  3. RewriteRule ^(\w+)/(\w+)/(\w+)$ index.php?action=$1&item=$2&id=$3

1. На сколько знаю, mod_rewrite использует perl'овые регулярные выражения, а по их правилам \w (опять же, если не ошибаюсь) обозначает примерно следующее: все буквы, цифры и символ "_".
2. К сожалению такой способ у меня не прокатит.. У меня структура такая: если пользователь открывает страницу index.php?action=aaa, то ему открывается файлик aaa.php, допустим. И, соответственно, нужно, что бы когда он ввёл сразу адрес aaa.php, то обманывать его, что такой файл не существует.
senneco Отправлено: 16 Марта, 2009 - 03:15:13 • Тема: Проблемы с css • Форум: HTML, Дизайн & CSS

Ответов: 6
Просмотров: 2689
Coder пишет:

Вот пример css file- body {backgrount:red;}
.a {color: yellow; text-aling: center; backgrount: black}
.razd1 {border: #999 solide 3px; backgrount: #080}

Ещё попробуй в css файле вместо .a писать просто a, без точки, или тогда уж в html'е пиши так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <a href="http://php.su" class="a">php</a>
  3.  
senneco Отправлено: 15 Марта, 2009 - 15:15:31 • Тема: Снова mod_rewrite.. • Форум: Apache и другие веб-серверы

Ответов: 15
Просмотров: 929
Проблема заключается в следующем: у меня есть набор некоторых правил, и мне нужно, что бы если ни одно из правил не подошло, выполнилось последнее правило( т.е. выполнился скрипт aaa.php). Привожу свой файл .htaccess:
CODE (text):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8
  2. RewriteEngine on
  3. RewriteRule ^([\w]+)/*$ index.php?action=$1
  4. RewriteRule ^([\w]+)/([\w]+)/*$ index.php?action=$1&item=$2
  5. RewriteRule ^([\w]+)/([\w]+)/([\w]+)/*$ index.php?action=$1&item=$2&id=$3
  6. RewriteRule ^(.*)$ aaa.php
  7.  

Заранье очень благодарствую!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB