Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Apache2 + mod_rewrite = любовь
 
 автор: Loki   (06.03.2007 в 13:58)   письмо автору
 
 

имеем следующие правила:

AllowOverride All
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase / 
RewriteRule ^(.+)//([^/]+)/?$    index.php?url=$1&var1=$2

Под Apache1.3 работает все прекрасно. Под Apache2 перестает совпадать... не нравится ему двойной слеш. Как можно переписать регулярное выражение (или починить апач)?

   
 
 автор: ZuArt   (06.03.2007 в 14:57)   письмо автору
 
   для: Loki   (06.03.2007 в 13:58)
 

а если попробовать слеши экранировать?

   
 
 автор: Loki   (06.03.2007 в 15:09)   письмо автору
 
   для: ZuArt   (06.03.2007 в 14:57)
 

Как вы себе представляете экранирование двойного слеша? Одинарные-то обрабатываются нормально.

   
 
 автор: ZuArt   (06.03.2007 в 15:32)   письмо автору
 
   для: Loki   (06.03.2007 в 15:09)
 

ну во первых экранировать стандартно "//" -> "\/\/"
во вторых - а где тут еще есть слеши RewriteRule ^(.+)//([^/]+)/?$ index.php?url=$1&var1=$2 кроме как в квадратных скобках и в конце... причем если в [...] понятно, что исключение из диапазона, а вот последний /? - вопрос как ЕГО воспринимает Апача - может еще и в нем трабла... - еще возникает вопрос - а если там БОЛЬШЕ "///" в конце урла - то правило так же не выполнится, т.к. в конце должно быть 0 или 1 слеш... лучше уж тогда /*$

на крайняк, попробуйте заключить и слеши в кавычки - может что-то и выйдет из этого

   
 
 автор: Loki   (06.03.2007 в 15:47)   письмо автору
 
   для: ZuArt   (06.03.2007 в 15:32)
 

как я уже написал выше, ему не нравится двойной слеш. Если бы я это не проверил, то не написал бы. Если добавить в выражение кавычки, то выражение, понятное дело, работать перестанет.
ps вариант с ^(.+)[/]{2}([^/]+)/?$ я уже тоже проверил... и он тоже не работает, к сожалению.

   
 
 автор: Trianon   (06.03.2007 в 15:33)   письмо автору
 
   для: Loki   (06.03.2007 в 15:09)
 

может это из-за плюса (.+) ?

   
 
 автор: Loki   (06.03.2007 в 15:43)   письмо автору
 
   для: Trianon   (06.03.2007 в 15:33)
 

Смущает именно то, что не работает на одном хостинге. То есть дело либо в его настройках либо в версии апача.

RewriteRule ^(.+)-([^/]+)/?$    index.php?url=$1&var1=$2 

для строки forum-1/ обрабатывается нормально
а

RewriteRule ^(.+)//([^/]+)/?$    index.php?url=$1&var1=$2 

для forum//1/ спотыкается
более того

RewriteRule ^([^/]+)/([^/]+)/?$    index.php?url=$1&var1=$2 

для forum/1/ тоже обрабатывается корректно. Поэтому я и пребываю в некоторой растерянности: слеши обрабатываются корректно... но в количестве одной штуки. То есть + можно заменить на * - принципиальной разницы не будет, так как первая часть выражения точно присутствует.

   
 
 автор: Trianon   (06.03.2007 в 16:32)   письмо автору
 
   для: Loki   (06.03.2007 в 15:43)
 

А если явно указать двоеточие?
^([^:]+:)

   
 
 автор: Loki   (06.03.2007 в 16:50)   письмо автору
 
   для: Trianon   (06.03.2007 в 16:32)
 

Двоеточие обрабатывается нормально... двойное двоеточие - тоже. А двойной слеш - нет.

   
 
 автор: Loki   (06.03.2007 в 20:38)   письмо автору
 
   для: Loki   (06.03.2007 в 13:58)
 

локализовал косяк:
правило

^([^/]+/+.*)

примененное к

forum////test

дает в результате

[url] => forum/test

То есть все дублирующиеся слеши апач превращает в один. Предлагаю вопрос "Кто виноват?" опустить и сразу перейти к "что делать?".
Предложение использовать другие разделители я уже сам придумал, так что на него время тратить не стоит. А вот как заставить апач не своевольничать с URL мне было бы узнать интересно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования