|
|
|
| Вообщем есть у меня файл index.php.. С помощью RewriteRule он у меня преобразуется в index.html .. Сайт новый, но раньше тоже существовал старый на этом же домене (domain.com). Там тоже был файл index.php и остальные страницы подгружались так: index.php?page=news например.. Вот.. Старый сайт yandex проиндексировал все страницы, которые начинаются с index.php.. Теперь соответственно когда открываешь index.php?page=catalog&razdel=13&etc открывается просто index.php.. Я хотел бы чтобы яндекс удалил у себя все эти длинные урл, начинающиеся с index.php, но яндекс думает, что index.php?page=catalog&razdel=13&etc существует, т.к. страница не выдает 404 ошибку и поэтому не удаляет их из базы.. Что делать? Может как то в htaccess запретить открытие файла index.php, а разрешить только index.html с помощью правила? А как это сделать? Вообщем пипец! Подскажите! | |
|
|
|
|
|
|
|
для: spiner
(03.08.2005 в 13:19)
| | > Может как то в htaccess запретить открытие файла index.php, а разрешить только index.html с помощью правила? А как это сделать? Вообщем пипец! Подскажите!
Так а если просто удалить index.php?
Ведь ваши задачи противоречат сами себе (мне так кажется). Поправьте, если что не так.
1. Нужно, чтобы по старым URL (c index.php) посетители проходили на сайт. Для этого используется mod_rewrite (index.php -> index.html)
2. Нужно чтобы при запросе страницы index.php выдавалась 404 ошибка (только так можно удалить страницы из базы яндекса).
По моему, эти пункты противоречат друг другу. | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(04.08.2005 в 14:13)
| | Нет. Пусть будет index.html (т.е. index.php + mod_rewrite).. А при любом запросе начиная с index.php, чтобы выдавалось 404.. Можно так сделать? | |
|
|
|
|
|
|
|
для: spiner
(05.08.2005 в 08:09)
| | Как всегда путаница с rewrite-ом.
Давайте по порядку.
На сервере есть index.php.
Какие URL должны использовать посетители сайта?
1. http://www.server.ru/index.html
или
2. http://www.server.ru/index.php
Если я правильно понял, то нужно разрешить только обращения посетителей к файлу index.html, а по обращению к index.php выдавать 404 ошибку.
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} index.php
RewriteRule ^(.+) /notfound.php
|
Файла notfound.php не должно быть | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(05.08.2005 в 09:52)
| | Да, вы все правильно поняли.. буду пробовать. Спасибо! | |
|
|
|
|
|
|
|
для: spiner
(05.08.2005 в 11:11)
| | Не работает. Вот как было.. Какие надо строки дописать?
Вот мой .htaccess
RewriteEngine on
Options +FollowSymLinks
RewriteRule ^factory([0-9]+)p([0-9]+)\.html$ factory.php?idzavod=$1&page=$2 [QSA
]
RewriteRule ^([a-zA-Z0-9]+)p([0-9]+)\.html$ cat.php?car=$1&page=$2 [QSA]
RewriteRule ^priceans\.html$ priceans.php
RewriteRule ^index\.html$ index.php
|
| |
|
|
|
|
|
|
|
для: spiner
(05.08.2005 в 12:30)
| | Можно вот так:
RewriteEngine on
Options +FollowSymLinks
RewriteRule ^factory([0-9]+)p([0-9]+)\.html$ factory.php?idzavod=$1&page=$2 [QSA
]
RewriteRule ^([a-zA-Z0-9]+)p([0-9]+)\.html$ cat.php?car=$1&page=$2 [QSA]
RewriteRule ^priceans\.html$ priceans.php
RewriteRule ^index\.html$ index.php
RewriteRule ^index.php /notfound.php
|
| |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(06.08.2005 в 12:04)
| | Помогите сделать так, что б все папки расположенные в http://domen.com/user/$папка/index.php
Вызывались бы http://domen.com/$папка/index.php
но при этом другие папки не пострадали бы и вызывались, так как раньше )) Помогите... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(06.08.2005 в 12:04)
| | Помогите сделать так, что б все папки расположенные в http://domen.com/user/$папка/index.php
Вызывались бы http://domen.com/$папка/index.php
но при этом другие папки не пострадали бы и вызывались, так как раньше )) Помогите... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(06.08.2005 в 12:04)
| | Не работает. Он не может найти index.php, соответственно нет index.html..Хотя странно, правило то раньше стоит.. | |
|
|
|
|
|
|
|
для: spiner
(06.08.2005 в 22:21)
| | Да, верно. Переадресация на index.php повторно рбрабатывается фильтрами и приводит к запрету.
Вот такой вариант у меня отрабатывает правильно.
RewriteCond %{QUERY_STRING} !r=redirect
RewriteCond %{REQUEST_URI} index.php
RewriteRule ^index\.php /notfound\.php [L]
RewriteCond %{REQUEST_URI} index\.html
RewriteRule ^index\.html$ index\.php?r=redirect
|
Запрет на index.php срабатывает только при выполнении 2 условий.
В URL нет параметра r=redirect
1. RewriteCond %{QUERY_STRING} !r=redirect
Это как раз защита от нашего преобразования index.html->index.php
При преобразовании (index.html->index.php) к URL добавляется дополнительный параметр r=redirect, идентифицирующий это преобразование.
2. В строке запроса должен быть записан index.php
Если оба условия выполняются, то подставляется несуществующий файл и в результате 404 ошибка. | |
|
|
|