RewriteCond %{QUERY_STRING} ^prof=%C0%E4%EC%E8%ED%E8%F1%F2%F0%E0%F2%EE%F0&gorod=%EA%E8%E5%E2&submit=%CD%E0%E9%F2%E8$ RewriteRule ^sv.php$ работа-вакансии-администратор.html? [R=301,L]
Тогда попробуйте такой прием:
условие - если запрашиваемый документ это папка
правило - реврайт на индексный файл в этой папке
RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)/?$ $1/index.php [L]
А Вы сделайте так, чтоб правило не затрагивало то, что лежит внутри folder1 (используйте символ конца строки в регулярке)
RewriteRule ^folder1/?$ folder1/index.php [L]
Наверно так положено (есле не принять каких-то специальных мер).
Например в сети есть следующее:
и еще:
т.е. проблема, возникшая перед Вами вызвана тем, что .htaccess (при некоторых условиях) делает внутреннюю переадресацию (добавляя в середину адреса директорию DIR, но не проверяя при этом наличия слэша в конце адреса, и не добавляя его при необходимости)
а затем (если не хватает слэша) начинает действовать mod_dir, делая внешний редирект на измененный в .htaccess адрес с добавлением слеша (и показывая пользователю что на самом деле все лежит в DIR)
Если всего десяток и предполагается что папки не будут активно плодиться, то не проблема и для каждой прописать свой редирект. Некоторые пишут сотни строк.
Не очень.
У Вас реврайт, а не редирект.
Получается что по двум адресам (со слэшем и без) будет получаться одинаковое содержимое, т.е. будут дубликаты страниц.
Лучше все-таки сделать 301 редирект, и с проверкой, что папка существует в директории DIR
RewriteCond %{REQUEST_URI} (.*/)([^/.]+)($|\?) RewriteCond %{DOCUMENT_ROOT}%1DIR/%2 -d RewriteRule .* %1%2/ [NC,R=301,L]
Если адрес заканчивается строкой (не содержащей точек и слэшей) или после этой строки идет знак вопроса
+
Если эта строка является поддиректорией директории DIR
=
Выполняется 301 редирект на тот же адрес с добавлением слэша
Перед теми строками, что Вы привели добавьте строку редиректа на адрес со слешем:
RewriteRule ^DIR1$ /DIR1/ [NC,R=301,L]
301 редирект любых документов из корневой папки сайта site.ru в папку folder
RewriteCond %{REQUEST_URI} !/[^/]+/ RewriteRule .* http://site.ru/folder/$0 [L,R=301]
А у меня есть отрицательные значения.
Что не удивительно, потому что на localhost стоит PHP Version 4.4.0 и естественно параметр get_as_float не работает и функция microtime выдает строку в любом случае.
maxttor, посмотрите, что возвращает функция microtime, например здесь, и Вам все станет понятно.
Кстати там кажется есть вариант правильного измерения времени.
У Вас преобразованный URI "brands/detail.php..." подходит для этого же правила преобразований "^brands/(.*)\.php" и правило применяется к нему снова и снова, вызывая зацикливание и вывод 500 ошибки. Нужно не допускать повторного преобразования, добавив перед правилом условие, проверяющее, что преобразование еще не сделано:
RewriteCond %{REQUEST_URI} !detail\.php RewriteRule ^brands/(.*)\.php$ /brands/detail.php?code=$1&%{QUERY_STRING} [L]