【问题标题】:How do I keep parameters from being added to the end of my new url in a 301 redirect?如何防止在 301 重定向中将参数添加到新网址的末尾?
【发布时间】:2020-02-20 15:12:23
【问题描述】:

我们有一个 Laravel 网站正在运行,我正在尝试为旧网址编写 301 重定向。

我在使用 RedirectMatch 时遇到的问题是参数被添加到新的 url 中,这会使该 url 无效。

使用 RewriteRule,我可以防止这种情况发生。但我似乎根本无法让 RewriteRule 工作。

下面是我的 htaccess。我真的很感激任何见解。我要讲的内容很多,可靠的模式至关重要。

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>
Options +FollowSymLinks
RewriteEngine On


RewriteRule ^/help-.*$ /faq? [R=301,L]

#RedirectMatch 301 ^/help-.*?$ /faq

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

【问题讨论】:

    标签: apache .htaccess laravel-5


    【解决方案1】:
    RewriteRule ^/help-.*$ /faq? [R=301,L]
    
    #RedirectMatch 301 ^/help-.*?$ /faq
    

    在 .htaccess 中配置时,RewriteRule 匹配的路径永远不会以 / 开头,此时已被剥离。试试^help-吧:

    RewriteRule ^help- /faq? [R=301,L]
    

    不需要匹配.*$,因为你不需要它后面的任何东西来替换,所以只需检查它是否help-开头就足够了。

    【讨论】:

    • 就是这样。谢谢你,CBroe!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2012-02-16
    相关资源
    最近更新 更多