【问题标题】:.htaccess redirect with 2 parameters.htaccess 使用 2 个参数重定向
【发布时间】:2015-01-13 03:51:47
【问题描述】:

我正在尝试完成以下重定向。

website.abc/index.php?page=foo // With one parameter
website.abc/foo

website.abc/index.php?page=foo&article=bar / With a second parameter
website.abc/foo/bar

它也必须向后重定向。

如果我输入 website.abc/foo/bar,它应该在内部被重定向到 index.php?page=foo&article=bar

我可以让它使用一个参数,但是一旦我使用第二个参数,URL 看起来像这样并给我 404:

website.abc/foo&article=bar.

我尝试了许多不同的方法来实现它,但都没有奏效。

有人知道怎么做吗?

【问题讨论】:

    标签: apache .htaccess url redirect parameters


    【解决方案1】:

    像这样去:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} ^/index\.php [NC]
    RewriteCond %{QUERY_STRING} \bpage=([^&]+)\b [NC]
    RewriteCond %{QUERY_STRING} \barticle=([^&]+)\b [NC]
    RewriteRule .* /%1/%2/? [R=302,L]
    
    RewriteCond %{REQUEST_URI} ^/index\.php [NC]
    RewriteCond %{QUERY_STRING} \bpage=([^&]+)\b [NC]
    RewriteRule .* /%1/? [R=302,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)(?:/([^/]+)/?)?$ index.php?page=$1&article=$2 [L,NC]
    

    【讨论】:

    • 这个例子在每个页面上都给了我 404 错误,如果我在第 2 级,URL 看起来像这样:website.abc/bar//
    • RewriteCond %{REQUEST_FILENAME} !-f 通过在第三个 QUERY_STRING 上方添加这一行,我摆脱了 404 并将前 2 个查询字符串加入一行。现在 URL 已正确显示,但在第二级它给了我错误:ERR_TOO_MANY_REDIRECTS
    猜你喜欢
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多