Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: опять htaccess
 
 автор: spiner   (03.08.2005 в 13:19)   письмо автору
 
 

Вообщем есть у меня файл 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 с помощью правила? А как это сделать? Вообщем пипец! Подскажите!

   
 
 автор: glsv (Дизайнер)   (04.08.2005 в 14:13)   письмо автору
 
   для: 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 ошибка (только так можно удалить страницы из базы яндекса).

По моему, эти пункты противоречат друг другу.

   
 
 автор: spiner   (05.08.2005 в 08:09)   письмо автору
 
   для: glsv (Дизайнер)   (04.08.2005 в 14:13)
 

Нет. Пусть будет index.html (т.е. index.php + mod_rewrite).. А при любом запросе начиная с index.php, чтобы выдавалось 404.. Можно так сделать?

   
 
 автор: glsv (Дизайнер)   (05.08.2005 в 09:52)   письмо автору
 
   для: 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 не должно быть

   
 
 автор: spiner   (05.08.2005 в 11:11)   письмо автору
 
   для: glsv (Дизайнер)   (05.08.2005 в 09:52)
 

Да, вы все правильно поняли.. буду пробовать. Спасибо!

   
 
 автор: spiner   (05.08.2005 в 12:30)   письмо автору
 
   для: 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

   
 
 автор: glsv (Дизайнер)   (06.08.2005 в 12:04)   письмо автору
 
   для: 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

   
 
 автор: V!rus   (06.08.2005 в 15:28)   письмо автору
 
   для: glsv (Дизайнер)   (06.08.2005 в 12:04)
 

Помогите сделать так, что б все папки расположенные в http://domen.com/user/$папка/index.php
Вызывались бы http://domen.com/$папка/index.php
но при этом другие папки не пострадали бы и вызывались, так как раньше )) Помогите...

   
 
 автор: V!rus   (06.08.2005 в 15:28)   письмо автору
 
   для: glsv (Дизайнер)   (06.08.2005 в 12:04)
 

Помогите сделать так, что б все папки расположенные в http://domen.com/user/$папка/index.php
Вызывались бы http://domen.com/$папка/index.php
но при этом другие папки не пострадали бы и вызывались, так как раньше )) Помогите...

   
 
 автор: spiner   (06.08.2005 в 22:21)   письмо автору
 
   для: glsv (Дизайнер)   (06.08.2005 в 12:04)
 

Не работает. Он не может найти index.php, соответственно нет index.html..Хотя странно, правило то раньше стоит..

   
 
 автор: glsv (Дизайнер)   (07.08.2005 в 17:53)   письмо автору
 
   для: 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 ошибка.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования