【问题标题】:.htaccess - re-writing a url using multiple parts of the original.htaccess - 使用原始的多个部分重写 url
【发布时间】:2013-05-07 10:53:22
【问题描述】:

我已经尝试解决此问题 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

我需要能够重复使用两个动态属性,标签 eg('facebook') 和分页编号 eg('5')传入的 url 请求,因为这些请求可能因每个请求而异。

这样做的原因是因为我们正在尝试解决未使用分页的旧 wordpress 博客中的 404 错误,只有“下一个”和“上一个”显示为“/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} 请求的组合,但仍然没有任何乐趣。对此的任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

    感谢您的帮助,我们尝试了您的两种方法,但均无效。最终,经过更多的试验和错误,我们设法做到了。这就是最终为我们工作的东西。

    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”并将 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]
    

    再次感谢。

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

    现在开始讨论其他人! :)

    【讨论】:

      【解决方案2】:

      这应该可行:

      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(永久重定向)。

      【讨论】:

        猜你喜欢
        • 2018-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-11
        相关资源
        最近更新 更多