Привет всем.
Возникла проблемка, раньше не проявлявшаяся.Имеется такой кусок .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Для ВСЕХ остальных случаев (без точки) всё работает.
Спасибо.
Не совсем понятно, зачем исключается точка из допустимых символов. Поэтому попробуйте так:RewriteRule ^(\S+)/?$ index.php?mod=$1 [L]
С таким условием вообще не работает :-(Как дать понять apache'у, что если есть точка, не надо искать файл с таким именем и расширением?
Хотелось бы всё-таки разобраться, очень актуально!
>С таким условием вообще не работает :-(
>
>Как дать понять apache'у, что если есть точка, не надо искать файл
>с таким именем и расширением?
>
>Хотелось бы всё-таки разобраться, очень актуально!попробуйте так
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?mod=$1 [L]видимо из-за отрицания в квадратных скобках точка воспринимается именно как точка, а не любой символ, отсюда такое поведение
И добавитьRewriteCond %{REQUEST_FILENAME} !-f
чтоб не только урлы с каталогами, но и с файлами не преобразовывались.
>RewriteCond %{REQUEST_FILENAME} !-d
>RewriteRule ^(.*)/?$ index.php?mod=$1 [L]