【问题标题】:htaccess 301 redirect with a dynamic page?htaccess 301 使用动态页面重定向?
【发布时间】:2012-03-21 14:28:03
【问题描述】:

在htaccess中,你如何301重定向动态页面?

例如,如果我想要一个让 /get.php?i=1234 重定向到 /i/1234 等的规则怎么办?

【问题讨论】:

    标签: php .htaccess dynamic redirect http-status-code-301


    【解决方案1】:

    您可以像在此代码中一样使用 mod_rewrite 重定向:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{QUERY_STRING} ^(i)=([^&]+)(&|$) [NC]
    RewriteRule ^get\.php$ %1/%2? [L,R=301,NC]
    

    【讨论】:

      【解决方案2】:

      试试RedirectMatch directiveregular expression。这取决于mod_alias,因此它可能始终处于启用状态。你也可以使用 mod_rewrite ,但这可能有点过头了。替换可能包含 $n 形式的引用:

      RedirectMatch 301 ^/get\.php\?i=([0-9]+)$ /i/$1
      

      如您所想,$1 是对括号 #1 内匹配内容的引用。你可以有很多参考:

      RedirectMatch 301 ^/get\.php\?i=([0-9]+)&y=([0-9]+)$ /i/$1/$2/
      

      您可以使用在线regular expression tester 来详细说明您的 apache 配置:如果我将 ^/get\.php\?i=([0-9]+)&y=([0-9]+)$ 放入“Regexp”输入中,并将 /get.php?i=12&y=24 放入“主题字符串”输入中,然后单击“显示匹配”它显示:

      Match at position 0:
      /get.php?i=12&y=24
      12  # first reference available
      24  # second reference available
      

      如果您的正则表达式在测试器中不起作用,它们就不可能在 apache 配置中起作用。您应该先在测试仪中试用它们。

      【讨论】:

        猜你喜欢
        • 2012-03-20
        • 1970-01-01
        • 2012-10-09
        • 2012-10-11
        • 1970-01-01
        • 1970-01-01
        • 2013-08-29
        • 2014-02-15
        • 1970-01-01
        相关资源
        最近更新 更多