.htaccess - 使用原始的多个部分重写URL

时间:2013-05-13 11:57:29

标签: .htaccess url mod-rewrite url-rewriting seo

我一直试图解决这个问题3天但找不到答案所以我希望有人能够对此有所了解。

我希望使用.htaccess动态重新编写URL作为永久301重定向用于SEO目的。我想改变以下内容:

OLD URL EXAMPLE: http://example.co.uk/blog/?tag=facebook/page/5/
OLD URL EXAMPLE: http://example.co.uk/blog/?tag=twitter/page/2/
OLD URL EXAMPLE: http://example.co.uk/blog/?tag=google/page/12/

NEW URL: http://example.co.uk/blog/?tag=facebook&paged=5
NEW URL: http://example.co.uk/blog/?tag=twitter&paged=2
NEW URL: http://example.co.uk/blog/?tag=google&paged=12

我需要能够重复使用两个动态属性,标签,例如('facebook')和分页编号,例如('5')提出的url请求,因为每个请求可能会有所不同。

之所以这样,是因为我们正在尝试从旧的wordpress博客中解决404错误,这些错误不使用分页,只是'next'和'previous',显示为'/ page / 5'。新博客使用分页,显示为“& paged = 5”。

这是我尝试过的一个例子。

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/blog/$
RewriteCond %{QUERY_STRING} ^tag=([a-z]+)/page/([0-9])$
RewriteRule ^(.*)$ http://example.co.uk/blog/?tag=%1&paged=%2 [R,L]

PHP作为CGI运行,无法更改为apache,导致整个站点出现大量权限问题。

我尝试过RewriteRules,RewriteConds和%{QUERY_STRING}请求的多种组合,但仍然没有任何乐趣。任何有关这方面的帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

这应该有效:

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

RewriteCond %{QUERY_STRING} ^tag=([^/]+)/page/([^/]+)/?$ [NC]
RewriteRule ^(blog)/?$ /$1/?tag=%1&paged=%2 [R=302,L,NC]

验证一切正常后,将R=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。

答案 1 :(得分:0)

感谢您的帮助,我们尝试了您的两种方法,但它们无法正常工作。最终,我们设法在经过一些试验和错误后才能正确使用它。以下是最终为我们工作的内容。

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/blog/$
RewriteCond %{QUERY_STRING} ^tag=([a-z]+)/page/([0-9]+)/$
RewriteRule ^(.*)$ http://example.co.uk/blog/?tag=%1&paged=%2 [R,L]

注意:只是一些语法错误似乎可以在Apache PHP设置上运行,但需要调整CGI PHP设置。

我们还通过更改'cat'的'tag'并将cat的正则表达式从字母更改为数字来重新使用此htaccess代码来计算类别:

RewriteCond %{REQUEST_URI}  ^/blog/$
RewriteCond %{QUERY_STRING} ^cat=([0-9]+)/page/([0-9]+)/$
RewriteRule ^(.*)$ http://example.co.uk/blog/?cat=%1&paged=%2 [R,L]

再次感谢。

希望这可以帮助将来有同样问题的人。

现在对其他人! :)