Поисковики и mod_rewrite
Причина такая у меня есть страницы для разных городов, но данные о городе
передаются при помощи переменных $_GET переменных и хранятся в сессии,
но мне кажется для поисковиков это не имеет веса. То есть раньне у меня было 300 страниц
затем я переделал для 100 городов но наример яндекс проиндексировал всего 1550,
наверное он не понимает ведь адреса страниц выглядят одинаково за исключение одной переменной
Мне кажется если адреса преобразовать
Например из вида
site/avto/prod.php?gorod=110
в строку
site/avto/gorod110/prod.php
Про mod_rewrite читать начал только сегодня
Сегодня же поробовал залить на сервер .htaccess следующего содержаня
Engine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
RewriteRule ^(.*)/gorod(.*)/(.*)$ $1/$3?gorod=$2
Сайт вообще перестал грузится...
Подскажите кто знает выражение
RewriteRule ^(.*)/gorod(.*)/(.*)$ $1/$3?gorod=$2
будет менять
site/avto/gorod110/prod.php
на
site/avto/prod.php?gorod=110
Имхо, гораздо лучше переделать url к виду: site/auto/city110.html
По регулярным выражениям на форуме говорилось уже очень много раз. Поищи.
Вложенные папки хуже индексятся поискивики не считают их важными
написал вот такой .htaccess
Options -Indexes
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)/gorod(.*)$ $1/$2?Gorod=$2 [L]
RewriteRule ^(.*)[\/gorod](.*)$ $1/$2?id=$2
RewriteRule ^(.*)/gorod(.*)/(.*)$ $1/$3?gorod=$2
Дома на локальном хосте куда его только не вставлял и в корень и в другие каталоги
ничего не работает и ошибки в лог файл не пишет...?????
RewriteRule ^(.*)\/gorod(.*)$ $1/$2?Gorod=$2 [L]
дома на локальном хосте под WIndows.
Или как проверить
В лог никаких ошибок не пишется...
я лично не смог распинать mod_rewrite под Винду, и не стал париться....
проверь для начала. работает .htaccess вообще или нет... напиши в него deny from all и кинь в корень сайта, если 403 Forbidden, то тогда копай к mod_rewrite.... если нет, то копай настройки апача относительно .htaccess файлов
PS: а вообще, где-то на форуме такое уже обсуждалось....
только как то странно
строка
RewriteRule ^(.*)[\/gorod\/](.*)$ index.php [L]
выполняется
строка
RewriteRule ^(.*)[\/gorod\/](.*)$ avto/index.php [L]
тоже выполняется только файл не находит
сомотрб логи там написано что нет файла C:/www/html/avto а не C:/www/html/avto/index.php ПОЧЕМУ ТО
а если написать
RewriteRule ^(.*)[\/gorod\/](.*)$ $1/index.php [L]
то комп не то чтобы зависает, просто страницу открывает бесконечно долго, а всё остальное так тормозит
сделай опции [R,L] вместо [L] и ты увидишь в строке адресной куда тебя пытается mod_rewrite перекинуть.
Буду дальше мучатся...
нужно из строки
http://localhost/110index-avto.html
сделать строку
http://localhost/avto/index.php?gorod=110
использую
RewriteRule ^(.*)([0-9]+)(.*)-(.*).html $1$4/$3.php?gorod=$2 [L]
а получается
http://localhost/11avto/index.php?gorod=0
почемуто цифры все не переносятся ......
RewriteRule ^(.*)\/(\d+)(.*)-(.*).html $1/$4/$3.php?gorod=$2 [L]
В итоге остановился на варианте
RewriteRule ^([a-z/]*)([0-9]+)-(.*).html $1$3.php?gorod=$2&%{QUERY_STRING} [L]
Адрес вида
http://localhost/avto/2-prog.html преобразуется http://localhost/avto/prog.php?per=2 (плюс пременные)
Адрес вида
http://localhost/2-prog.html преобразуется http://localhost/prog.php?per=2 (плюс пременные)
может кому пригодится...