URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 6982
[ Назад ]

Исходное сообщение
"Проблема с URL и .htaccess"

Отправлено src , 05-Сен-10 23:26 
Привет всем.
Возникла проблемка, раньше не проявлявшаяся.

Имеется такой кусок .htaccess:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/?$ index.php?mod=$1 [L]

который делает из "http://site.com/catalog" - "http://site.com/index.php?mod=catalog"

При этом всё отлично работает, пока в URL не появляется символ "." (точка).

То есть если написать в адресной строке

"http://site.com/catalog&value=5.6", то вместо того, чтоб перебросить на "http://site.com/index.php?mod=catalog&value=5.6", пишет в браузере:

Not Found
The requested URL /catalog&value=5.6 was not found on this server.
Apache Server at znvideo.ru Port 80

Для ВСЕХ остальных случаев (без точки) всё работает.

Спасибо.


Содержание

Сообщения в этом обсуждении
"Проблема с URL и .htaccess"
Отправлено cryo , 06-Сен-10 13:13 
Не совсем понятно, зачем исключается точка из допустимых символов. Поэтому попробуйте так:

RewriteRule ^(\S+)/?$ index.php?mod=$1 [L]


"Проблема с URL и .htaccess"
Отправлено src , 06-Сен-10 22:13 
С таким условием вообще не работает :-(

Как дать понять apache'у, что если есть точка, не надо искать файл с таким именем и расширением?

Хотелось бы всё-таки разобраться, очень актуально!


"Проблема с URL и .htaccess"
Отправлено Кирилл_Н , 07-Сен-10 13:25 
>С таким условием вообще не работает :-(
>
>Как дать понять apache'у, что если есть точка, не надо искать файл
>с таким именем и расширением?
>
>Хотелось бы всё-таки разобраться, очень актуально!

попробуйте так

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?mod=$1 [L]

видимо из-за отрицания в квадратных скобках точка воспринимается именно как точка, а не любой символ, отсюда такое поведение


"Проблема с URL и .htaccess"
Отправлено cryo , 07-Сен-10 23:04 
И добавить

RewriteCond %{REQUEST_FILENAME} !-f

чтоб не только урлы с каталогами, но и с файлами не преобразовывались.

>RewriteCond %{REQUEST_FILENAME} !-d
>RewriteRule ^(.*)/?$ index.php?mod=$1 [L]