Вопрос по .htaccess

A
На сайте с 18.02.2009
Offline
46
418

Подскажите, как сделать так, чтобы при любой попытки зайти на www.site.ru, сразу перекидывала на site.ru, без www.

Аккаунты на торрент-трекеры. () Тут дают деньги!!! (http://Pop-Bazar.com/registration.php?ref=2115)
Garin33
На сайте с 31.08.2009
Offline
169
#1

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301]

Потому что Drupal - это круто.
II
На сайте с 27.02.2010
Offline
48
#2

Может кто знает, как сделать, бьюсь уже не первый день над вопросом, буду очень благодарен за помощь:

нужно в .htaccess сделать такой редирект, чтобы с адресов

http://site.ru/statia.php?блаблабла

выдавало код 404

т.е., если в строке адреса после .php набрали символ ? и за ним всё что угодно или даже просто один символ ?, то тут же 404 код

набрали

http://site.ru/statia.php? - получите 404

набрали

http://site.ru/statia.php?param - получите 404

набрали

http://site.ru/statia.php?param=vasya - получите 404

и т.д.

Скажу сразу сайт на инклудах, никакой CMS нет.

rammlied
На сайте с 13.04.2011
Offline
56
#3
ivan_i:
Может кто знает, как сделать, бьюсь уже не первый день над вопросом, буду очень благодарен за помощь:
нужно в .htaccess сделать такой редирект, чтобы с адресов
http://site.ru/statia.php?блаблабла
выдавало код 404
т.е., если в строке адреса после .php набрали символ ? и за ним всё что угодно или даже просто один символ ?, то тут же 404 код

набрали
http://site.ru/statia.php? - получите 404
набрали
http://site.ru/statia.php?param - получите 404
набрали
http://site.ru/statia.php?param=vasya - получите 404
и т.д.

Скажу сразу сайт на инклудах, никакой CMS нет.

Как сделать не могу сказать, но намного интереснее зачем это Вам. Если это делается для того чтобы не было дублей в ПС, то я бы посоветовал лучше внутри страницы statia.php написать каноникал на саму себя

делаю СДЛы, получаются ГСы )
C
На сайте с 04.02.2005
Offline
277
#4

? - это разделитель между URL и параметрами

? не является частью URL, с которым работает mod_rewrite.

Если уж очень надо

то проще анализировать url в коде

$_SERVER['REQUEST_URI']

skAmZ
На сайте с 04.09.2009
Offline
122
#5
ivan_i:
http://site.ru/statia.php?param - получите 404
набрали
http://site.ru/statia.php?param=vasya - получите 404
и т.д.

Можно через %{QUERY_STRING}

ivan_i:
набрали
http://site.ru/statia.php? - получите 404

С этим не прокатит.

II
На сайте с 27.02.2010
Offline
48
#6
Chukcha:
? - это разделитель между URL и параметрами
? не является частью URL, с которым работает mod_rewrite.
Если уж очень надо
то проще анализировать url в коде
$_SERVER['REQUEST_URI']

я пробовал в код страницы вставить вот такой php-код:

<?

$uri = $_SERVER['REQUEST_URI'];

$pos = stripos($uri,".php?");

if ($pos > 0) {

header("HTTP/1.1 404 Not Found");

exit;

}

?>

но браузер FF не отдает 404, а просто чистый лист. Хром пишет - Ошибка, а не 404.

Что не так в этом коде?

C
На сайте с 04.02.2005
Offline
277
#7

Все так...

Отдать 404 ответ, это еще не значит, что браузер должен что-то вывести

Страница с 404 ошибкой может выглядеть как угодно, и контент на ней может быть какой угодно. Но КОД ОТВЕТА сервера должен быть 404

Сделайте

header("HTTP/1.1 404 Not Found");

echo "bla-bla-bla";

exit;

II
На сайте с 27.02.2010
Offline
48
#8

Понял. Спасибо.

Я сначала реализовал на php, но меня смутило то, что браузеры не выдавали 404 как обычно выдают в таких случаях, и я начал искать, как это сделать в .htaccess - потратил время, так и не смог найти работающий код. и задал вопрос тут.

Значит с php-кодом всё в порядке и можно его использовать?

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