htaccess的SEO友好链接-将动态链接重定向到静态链接


SEO friendly links with htaccess - redirecting dynamic links to static

我有一个网站,我想在其中切换到SEO友好的链接。为了节省一些工作,我想通过htaccess进行重定向,以便旧的动态链接如:

mydomain.com/mypage.php?id=1&something=2

将重定向到更友好的:

mydomain.com/mypage/1/2/

据我所知,我需要这些重定向,这样搜索引擎就不会因为重复的内容而惩罚我。由于我需要这样做,我认为制作它们可能更容易,而不是将每个页面上的链接都更改为友好的链接-我使用的是普通的html格式,所以不会很直接。我正试图用htaccess中的代码做到这一点:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /directory for mydomain.com/
RewriteRule ^mypage'.php?id=([0-9]+)&something=([0-9]+)$ ^mypage/$1/$2 [R=302,QSA]
RewriteRule ^mypage/([0-9]+)/([0-9]+)/?$ ^mypage.php?id=$1&something=$2  [QSA]

但它不起作用。我认为一个问题可能是中的"?"

^mypage.php?id=([0-9]+)....

我可能错了,但通过多次测试,我得出结论,我不能使用?在那里做标记,但不确定如何努力。

请帮忙。

不能在RewriteRule中匹配查询字符串。处理此问题的正确方法是在DocumentRoot/.htaccess文件中使用以下规则:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /test_redirects/
# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} 's/test_redirects/([^.]+)'.php'?id=([^'s&]+)&something=([^'s&]+) [NC]
RewriteRule ^ %1/%2/%3? [R=302,L]
# internal forward from pretty URL to actual one
RewriteRule ^([^/]+)/([0-9]+)/([^/]+)/?$ $1.php?id=$2&something=$3 [L,QSA]