Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > mod_rewrite, RewriteCond отдать 404. Нужна помощь


Автор: PETRUHA 29.10.2008, 14:43
Ситуация такая:

Необходимо убедиться, чтобы при запросе любых некорректных URLs вида http://www.host.ru/?N,
где где N – любой численный или строковый параметр,
например, http://www.host.ru/?jkadf.ghfjklg, а также URLs вида http://www.host.ru/., http://www.host.ru/?, http://www.host.ru//
сервер отдавал HTTP/1.1 404 Not Found, либо HTTP/1.1 301 Moved Permanently.

Это все должно работать исключительно для главной страницы (/) и не затрагивать любые другие страницы (/news.php, /somethingelse.php).

Логика
1) редирект - логика такая: если страница главная - все запросы с QUERY_STRING переадресовывваем на главную исключение, если квери стринг содержит "_openstat"
2) если страница тупо такая "http://www.host.ru/." или тупо такая "http://www.host.ru//"ставим редирект на 404.

Автор: PETRUHA 30.10.2008, 10:27
Решение:

Код

RewriteCond %{REQUEST_URI} ^/$ 
RewriteCond %{QUERY_STRING} ^.+$ 
RewriteCond %{QUERY_STRING} !_openstat=.+$ 
RewriteRule ^.*$ http://%{HTTP_HOST}/? [R=301,L] 
 
RewriteCond %{REQUEST_URI}    ^/[./]$ 
RewriteCond %{QUERY_STRING} !_openstat=.+$ 
RewriteRule ^.*$ http://%{HTTP_HOST}/? [R=301,L]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)