Деймос,
при использовании
RewriteCond $1 \.php$
у Вас кажется происходит повторное применение правила,
попробуйте добавить еще исключение для страницы city.php,
т.е. сделать так
RewriteCond %{HTTP_HOST} !^www.
RewriteCond %{HTTP_HOST} ^([a-z-]+).site.ru
RewriteCond $1 !^city\.php$
RewriteRule (.*) city.php?city_link=%1 [L]
они в тексте страницы прописаны с относительными путями, и получается что запрашивается что-то типа
ufa.site.ru/css/style.css
ufa.site.ru/js/funcs.js и т.д.
и в конечном итоге Вы наверно получаете (как результат добавленного реврайта)
city.php?city_link=css/style.css
но не обрабатываете в city.php подобные запросы
Попробуйте исключить из обработки этим реврайтом файлы стилей и скрипты
RewriteCond $1 !\.(css|js)$
можно добавить еще для исключения другие расширения для файлов с основного домена css|js|jpg|swf и так далее
А если реврайт c поддомена делается только для конкретных расширений, например htm или php, то проще описать не исключения, а эти расширения,
изменив 3 строку так
или так
RewriteCond $1 \.(htm|php)$
чтобы использовать в подстановках значения в скобках из шаблонов в RewriteCond, нужно писать %1 (и до %9), в отличии от значений из шаблонов в RewriteRule, которые обозначаются $0 (это весь шаблон) и $1 - $9 (это то что в скобках)
попробуйте так
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
это оставляете как есть (редирект с адреса без www на адрес с www),
а дальше так
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) /city.php?city_link=%1 [L]
Т.е в элементе масива ГЕТ ["city_link"] в city.php Вы будете иметь поддомен, а если вам нужен и адрес запрошенной страницы на этом поддомене, то можете сделать так (чтоб в элементе ["url"] иметь адрес страницы)
RewriteRule (.*) /city.php?city_link=%1&url=$1 [L]
Это все конечно будет работать при нормальной настройке DNS, когда все поддомены будут переадресовываться на основной домен
Можете проверить это в логах сервера, если там есть кроме www.site.ru и site.ru и другие поддомены, то с настройкой DNS все в норме, нужно только настроить реврайты.
Zdorova,
если у Вас в роботс есть другие секции User-agent кроме
User-agent: *
то нужно прописать
Disallow: /?index=try1
Disallow: /eng/?index=try1
в каждой секции User-agent (строчки работают и без * в конце, проверял у Яндекса)
Но более надежно сделать редиректами через .htaccess запрет для доступа ботов, проверяя в RewriteCond значение %{HTTP_USER_AGENT} на соответсвие наиболее активным ботам.
Попробуйте посмотреть в поиске запрет индексации через htaccess
enton, попробуйте такой вариант
RewriteRule ^(.+)\ $ http://%{HTTP_HOST}/$1 [R=301,L]
В общем случае где-то так:
RewriteCond %{QUERY_STRING} ^(.*)pagenum=[0-9]+(.*)$ [NC]RewriteRule ^index\.php$ http://%{HTTP_HOST}/$0?%1%2 [R=301,L,NC]
при этом лишний символ "&" после редиректа может остаться
добавьте флаг QSA
RewriteRule ^category/(.*)\.html$ /category.php?id=$1 [L,QSA]
"more-5" это якорь на странице http://site.com/tsentr-razvitiya/ (ссылка на ту часть страницы, где расположен элемент с атрибутом name="more-5")
Для поисковиков эта пара
http://site.com/tsentr-razvitiya/
http://site.com/tsentr-razvitiya/#more-5
не два URLа, а один (все что до символа #)
Так что забудьте про эти, как Вы их назвали "дубли страниц"
postavkin, может Вам действительно достаточно двумерного ассоциированного массива ?
Например что-то типа $arrBrand['nokia']=array();
$namesf = array('nokia', 'samsung');
$arrBrand=array();
foreach ($namesf as $value) {
$name = $value; // получили запись $name=nokia, далее $name=samsung...
$arrBrand[$value] = array();
}
И будете иметь в результате пару массивов (пока пустых)
$arrBrand['nokia']
$arrBrand['samsung']
Просто замените на 302.
флаг L (означающий что это последнее преобразование) нужен (если Вы не хотите применять к новому URL дальнейшие правила преобразований, расположенные ниже по файлу htaccess)