Как я могу устранить эти ошибки vbulletin 404 с помощью htaccess?

У меня есть очень большой форум (230 тыс. тем, 3 миллиона сообщений), на котором в инструментах Google для веб-мастеров сообщается о большом количестве 404 страниц, около 14 000 404 URL-адресов. Google, вероятно, показывает эти 404, потому что у меня есть входящие ссылки на них, а это означает, что я теряю много преимуществ SEO, если эти ссылки не ведут на реальную страницу.

Я знаю, почему у меня возникла эта проблема, год назад URL-адреса на моем сайте были изменены обратно на vBulletin по умолчанию, чтобы они выглядели так:

http://www.domain.com/showthread.php?t=323653&p=4230256

Я хотел бы оставить их такими, так как они были такими в течение года. Проблема в том, что было два предыдущих формата, которые отображали ошибки 404:

Эти:

http://www.domain.com/forums/showthread.php?t=21461

http://www.domain.com/forums/showthread.php?t=16187

Которому просто нужно удалить forums/ из URL-адреса, а это:

http://www.domain.com/forums/f8/39840-infractions_system_how_works.html

http://www.domain.com/forums/f11/67410-viewing_ijji_gunz_replays_while_offline.html

Это странная структура URL-адресов, которая была создана, когда у меня был установлен vbSEO.

/forums/ нужно удалить, и я думаю, что числа 39840 и 67410, вероятно, являются идентификатором потока. Я думаю, что в URL-адресе есть все, что нам нужно переписать, но я не совсем уверен, как этого добиться с помощью htaccess.


person Citizen    schedule 23.07.2013    source источник


Ответы (2)


Предположим, что ваш .htaccess находится в корне сайта "/"

RewriteEngine on
RewriteBase /

# removes "forums/"
RewriteCond %{REQUEST_URI} !^/showthread.php$ [NC]
RewriteRule ^forums/([^/]+)$ $1 [R=301,NC,L]

# parses thread id
RewriteCond %{REQUEST_URI} !^/showthread.php$ [NC]
RewriteRule ^forums/[^/]+/(\d+)-.*$ showthread.php?t=$1 [R=301,NC,L]
person Ravi K Thapliyal    schedule 30.07.2013

Включите mod_rewrite и .htaccess через httpd.conf, а затем поместите этот код в каталог .htaccess под DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# to redirect /forums/f8/39840-something.html to
# /showthread.php?t=39840
RewriteRule ^forums/[^/]+/([^-]+)-[^.]+\.html$ /showthread.php?t=$1 [R=301,NC,L,QSA]

# to redirect /forums//showthread.php?t=39840 to
# /showthread.php?t=39840
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^forums/([^/]+)/?$ /$1 [R=301,NC,L]
person anubhava    schedule 02.08.2013