1

我有一个非常大的论坛(23 万个线程,300 万个帖子),在 Google 网站管理员工具上报告了大量的 404 个页面,大约有 14,000 404 个 URL。谷歌可能会显示这些 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

这是我安装 vbSEO 时创建的一个时髦的 URL 结构。

/forums/需要删除,我认为数字 39840 和 67410 可能是线程 ID。我认为 URL 中有我们需要重写的所有内容,但我不完全确定如何使用 htaccess 来实现它。

4

2 回答 2

1

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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]
于 2013-08-02T21:50:40.287 回答
1

假设您.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]
于 2013-07-30T21:53:34.797 回答