Перенаправить и переписать URL-адреса и заменить пробел тире

Я хотел бы переписать/перенаправить URL-адреса на моем сайте. Вот что я хочу сделать:

  1. Перенаправление с www.olddomain.com на www.newdomain.com
  2. Перепишите URL-адреса и создайте чистые URL-адреса
  3. Игнорировать определенные параметры при создании чистого URL
  4. Замените пустое место %20 тире.

Вот несколько примеров URL-адресов на моем сайте и то, на что я хотел бы их переписать/перенаправить:

www.olddomain.com/events/events.php?location=los%angeles www.newdomain.com/events/los-angeles

www.olddomain.com/nightclubs/nightclubs.php?location=los%angeles www.newdomain.com/nightclubs/los-angeles

www.olddomain.com/nightclubs/nightclubDetail.php?venueID=1234&userID=1346 www.newdomain.com/venue/1234

www.olddomain.com/nightclubs/nightclubs.php?cat_type=bars&location=los%angeles www.newdomain.com/nightclubs/bars/los-angeles

www.olddomain.com/events/events.php?location=los%angeles www.newdomain.com/events/los-angeles

www.olddomain.com/events/eventsDetail.php?eventID=1234&slid=5678&lid=5432 www.newdomain.com/events/1234

Кроме того, URL-адреса, которые уже проиндексированы в Google, содержат строки местоположения, например: ?location=los%20angeles.

Вот как записываются URL-адреса в моей XML-карте сайта.

Как заставить Google заменить текущие проиндексированные URL-адреса новыми URL-адресами со строкой местоположения, например: ?location=los-angeles


person Angelo Rodriguez    schedule 11.04.2014    source источник


Ответы (1)


Добавление их в htaccess olddomain.com должно работать:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?cat_type=(.*)&location=(.*)%(.*)\ HTTP
RewriteRule ^ http://newdomain.com/%3/%4/%5-%6? [R=301,L]

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?venueID=(.*)&userID=(.*)\ HTTP
RewriteRule ^ http://newdomain.com/venue/%4? [R=301,L]

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?location=(.*)%(.*)\ HTTP
RewriteRule ^ http://newdomain.com/%3/%4-%5? [R=301,L]

RewriteCond %{THE_REQUEST} ^(GET|POST)\ /(.*)/(.*)\.php\?eventID=(.*)&slid=(.*)&lid=(.*)\ HTTP
RewriteRule ^ http://newdomain.com/%2/%4? [R=301,L]
person Howli    schedule 11.04.2014
comment
Спасибо за ответ. Придется ли мне также добавлять переадресацию 301 для всего сайта? например: RewriteCond %{HTTP_HOST} ^www.olddomain.com [NC] RewriteRule ^(.*)$ newdomain.com/ $1 [L,R=301] . И повлияет ли это на другие правила, которые вы дали? - person Angelo Rodriguez; 12.04.2014
comment
Вы бы добавили это одно после других. - person Howli; 12.04.2014
comment
Итак, мне также придется создать отдельное правило для каждого URL-адреса отдельной страницы? Поскольку я дал вам только несколько примеров URL-адресов на моем сайте. Есть еще несколько вариаций. Должно ли быть правило для каждого варианта? - person Angelo Rodriguez; 12.04.2014
comment
Если вам нужны красивые URL-адреса, то да, если у вас все в порядке с URL-адресами, то нет. - person Howli; 12.04.2014
comment
когда я использую предоставленные вами правила, он правильно переписывает URL-адрес, но затем выдает ошибку 404. Например, domain.com/events/events.php будет перезаписан в domain.com/events, но выдаст ошибку 404. - person Angelo Rodriguez; 18.04.2014