Настройка .htaccess

S
На сайте с 09.03.2009
Offline
42
1122

Помогите решить следующий вопрос:

Необходимо выполнить:

Рекомендации компании по продвижению

Ошибка 404

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

При этом в поле Location должен быть прописан URL, содержащий основной хост ресурса, т.е. http://www.pride-s.ru/.

Для отслеживания статистики переходов при проведении рекламных кампаний необходимо произвести соответствующую настройку сервера (страницы со специальным параметром, например, _openstat или from=adwords, должны отдавать ответ сервера HTTP/1.1 200 ОК).

Для сервера Apache это можно реализовать при помощи модуля Mod_rewrite. Для этого необходимо создать следующие правила переадресации в конфигурационном файле сервера Apache .htaccess, расположенного в корневой директории сервера (DOCUMENT_ROOT):

RewriteEngine on
RewriteCond %{QUERY_STRING} ^.+$
RewriteCond %{QUERY_STRING} !_openstat=
RewriteCond %{QUERY_STRING} !from=adwords
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1? [R=301,L]

RewriteCond %{THE_REQUEST} /[?.]
RewriteCond %{QUERY_STRING} !_openstat=
RewriteCond %{QUERY_STRING} !from=adwords
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1? [R=301,L]

RewriteCond %{THE_REQUEST} /[/]
RewriteRule ^.*$ http://%{HTTP_HOST}/? [R=301,L]

В случае использования иных параметров для отслеживания статистики рекламных кампаний, правила необходимо скорректировать.

Важно: данные правила переадресации даны в качестве примера, для некоторых платформ возможно потребуется доработка данных правил.

(сделал, всё как написано, скопировал эту часть когда в .htaccess) после сохранения, нажимая на любую страницу .. открывается главная((

Saimen добавил 21.03.2009 в 15:16

Кто может подсказать, как решить эту проблемку(

S
На сайте с 09.03.2009
Offline
42
#1

:( кто-нибудь...помогите

S
На сайте с 09.03.2009
Offline
42
#2

Захожу на http://www.pride-s.ru/, заходит.. далее жму на любую ссылку на сайте отправляет на http://www.pride-s.ru/index.php

ErrorDocument 404 /404.shtml

<IfModule mod_php.c>
php_value session.use_trans_sid 0
php_value session.use_cookies 1
php_value session.use_only_cookies 1
php_flag register_globals Off
php_flag display_errors off
</IfModule>
<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^.+$
RewriteCond %{QUERY_STRING} !_openstat=
RewriteCond %{QUERY_STRING} !from=adwords
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1? [R=301,L]

RewriteCond %{THE_REQUEST} /[?.]
RewriteCond %{QUERY_STRING} !_openstat=
RewriteCond %{QUERY_STRING} !from=adwords
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1? [R=301,L]

RewriteCond %{THE_REQUEST} /[/]
RewriteRule ^.*$ http://%{HTTP_HOST}/? [R=301,L]


RewriteCond %{HTTP_HOST} ^pride-s.ru
RewriteRule (.*) http://www.pride-s.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.pride-s.ru/ [R=301,L]

RewriteBase /
RewriteRule ^category_([0-9]+)_offset_0.html$ 404.shtml [L]
RewriteRule ^index.html$ index.php [L]
RewriteRule ^admin.html$ admin.php [L]
RewriteRule ^news.html$ index.php?news=yes [L]
RewriteRule ^price.html$ index.php?show_price=yes [L]
RewriteRule ^cart.html$ index.php?shopping_cart=yes [L]
RewriteRule ^wide_search.html$ index.php?search_with_change_category_ability=yes [L]
RewriteRule ^feedback.html$ index.php?feedback=yes [L]
RewriteRule ^compare.html$ index.php?comparison_products=yes [L]
RewriteRule ^page_([0-9]+).html$ index.php?show_aux_page=$1 [L]
RewriteRule ^product_([0-9]+).html$ index.php?productID=$1 [L]
RewriteRule ^category_([0-9]+).html$ index.php?categoryID=$1 [L]
RewriteRule ^category_([0-9]+)_offset_([0-9]+).html$ index.php?categoryID=$1&offset=$2 [L]
RewriteRule ^category_([0-9]+)_show_all.html$ index.php?categoryID=$1&show_all=yes [L]
RewriteRule ^show_news_([0-9]+).html$ index.php?fullnews=$1 [L]
</IfModule>

богоносец
На сайте с 30.01.2007
Offline
774
#3
itmgk
На сайте с 08.11.2007
Offline
105
#4

разобрались? :)

[Удален]
#5

ТС похоже продвигается у БДБД. У них именно такие идиотические требования к сайту присылают при заключении договора. В частности, тот кто эти требования составлял - обапл, он видимо не знает что запрос вида site.ru/page? не перехватывается сервером, браузер этот знак вопроса не отправляет.

Я когда эту проблему решал, делал это без htaccess, в index.php просто накладывал кучу условий на $_SERVER['QUERY_STRING'];

S
На сайте с 09.03.2009
Offline
42
#6

Легко в поисковик направить, а теперь попробуй найди там, то что нужно для решения этой проблемы!

Saimen добавил 24.03.2009 в 15:01

itmgk:
разобрались? :)

нет( не разобрался

Saimen добавил 24.03.2009 в 15:04

neolord:
ТС похоже продвигается у БДБД. У них именно такие идиотические требования к сайту присылают при заключении договора. В частности, тот кто эти требования составлял - обапл, он видимо не знает что запрос вида site.ru/page? не перехватывается сервером, браузер этот знак вопроса не отправляет.

Я когда эту проблему решал, делал это без htaccess, в index.php просто накладывал кучу условий на $_SERVER['QUERY_STRING'];

Да составляли они.

но разве они придираются к вопросу после site.ru/page? а не к site.ru/?

[Удален]
#7

Да составляли они.

но разве они придираются к вопросу после site.ru/page? а не к site.ru/?

Да одно и то же - не перехватывается такой запрос.

Рекомендую все таки на стороне php это перехватывать, для htaccess будет много не очень удобных правил

S
На сайте с 09.03.2009
Offline
42
#8

кто-нибудь может подсказать как поправить, чтоб работало?

J
На сайте с 02.02.2009
Offline
53
#9


<?
if(substr($_SERVER['HTTP_HOST'],0,4)!='www.'){
header('HTTP/1.1 301 Moved Permanently');
header("Location: http://www.".$_SERVER['HTTP_HOST']);
die();
}
if(strpos($_SERVER['REQUEST_URI'],"_openstat=") === false && strpos($_SERVER['REQUEST_URI'],"from=adwords") === false){
$tmp = substr($_SERVER['REQUEST_URI'],0,2);
if($tmp == '//' || $tmp == '/?' || $tmp == '/.'){
header('HTTP/1.1 301 Moved Permanently');
header("Location: http://".$_SERVER['HTTP_HOST']);
die();
}
}
?>

в начало индекса или любого "верхнего" файла и забудьте про этот .htaccess

S
На сайте с 09.03.2009
Offline
42
#10

jumash,

Спасибо большое), помогло)

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