|
|
|
| Как бы мне так сделать, чтобы все запросы файлов, название которых начинается с буквы r
передавались файлу read.
Все запросы файлов, начинающихся с t - файлу this.
Например:
http://myhost.ru/one/two/last/rainbow.php?f=170&s=340 => http://myhost.ru/one/two/last/read.php?f=170&s=340
http://myhost.ru/one/two/last/rainbow.php?f=690&s=50790 => http://myhost.ru/one/two/last/read.php?f=690&s=50790
http://myhost.ru/one/two/last/thing.php?f=560&s=40 => http://myhost.ru/one/two/last/this.php?f=560&s=40
http://myhost.ru/one/two/last/rainbow.php => http://myhost.ru/one/two/last/read.php
И так далее .
Гет параметров может и не быть. | |
|
|
|
|
|
|
|
для: Eugene77
(02.05.2008 в 18:40)
| | Я вижу, что Апачи использует некий механизм регулярных выражений, но никак не могу взять в толк его особенность. Если бы это было Preg_replace, я бы написал регулярку, а для Апачи не могу сообразить как это делается.
Может мне что-то почитать, чтобы чётко уяснить разницу? | |
|
|
|
|
|
|
|
для: Eugene77
(02.05.2008 в 18:40)
| | Ура! Разобрался сам, хоть и долго экспериментировал.
RewriteCond %{REQUEST_FILENAME} .*/r([a-zA-Z]*).php(.*)
RewriteRule ^(.*)r([a-zA-Z]*)\.php(.*) $1read\.php$3
Эти строки перенаправляют запрос с любого файла, начинающегося с буквы r на файл read.php, передавая при этом аргументы.
1) Посмотрите, пожалуста насколько разумно это записано, может я намудрил лишнего?
2) У меня ещё осталась задача, все остальные файлы, то есть те, которые не удовлетворяют ни одному условию из списка(список будет на несколько букв), перенаправлять на страницу ошибок. | |
|
|
|
|
|
|
|
для: Eugene77
(05.05.2008 в 07:54)
| | > Эти строки перенаправляют запрос с любого файла, начинающегося с буквы r на файл read.php, передавая при этом аргументы.
Неа. Только так:
RewriteRule ^(.*)r([a-zA-Z]*).php $1read.php?%{QUERY_STRING}
> RewriteCond %{REQUEST_FILENAME} .*/r([a-zA-Z]*).php(.*)
(.*) в конце надо заменить на $ | |
|
|
|
|
|
|
|
для: Atheist
(05.05.2008 в 14:03)
| | Так действительно работает.
Но с чем связана такая строгость?:
>Неа. Только так:
>
В чём конкретное преимущество?
Просто красивее выглядит?
Да, согласен.
Но, может есть и другая причина?
Спасибо в любом случае! | |
|
|
|
|
|
|
|
для: Eugene77
(05.05.2008 в 20:32)
| | > Но, может есть и другая причина?
Твой код по идее нерабочий, потому что в RewriteRule не попадает QUERY_STRING. | |
|
|
|
|
|
|
|
для: Atheist
(05.05.2008 в 21:49)
| | Он попадает в качестве 3-й переменной $3.
Разве не так? | |
|
|
|
|
|
|
|
для: Eugene77
(06.05.2008 в 08:58)
| | Не так. Строка запроса в subject для RewriteRule не попадает. | |
|
|
|
|
|
|
|
для: Atheist
(06.05.2008 в 11:11)
| | >Не так. Строка запроса в subject для RewriteRule не попадает.
1. Скажите, а вы пробовали?
2. Какой у вас Апачи?
У меня GET параметры успешно передаются.
Повторю содержимое .htaccess
на случай, если вдруг где-то опечатка у меня.
RewriteCond %{REQUEST_FILENAME} .*_rd([a-zA-Z]*).php(.*)
RewriteRule ^(.*)_rd([a-zA-Z]*)\.php(.*) $1read\.php$3
Это реально действующий пример.
Файлы начинающиеся с _rd вместе с параметрами попадают в read. | |
|
|
|