【问题标题】:Redirect with .htaccess and?使用 .htaccess 重定向和?
【发布时间】:2018-03-12 03:02:00
【问题描述】:

我需要将所有请求重定向到此链接

https://www.example.com/firstAccess?utm_source=Newsletter&utm_medium=email&utm_content=Benvenuto+su+Magazzino+Perfetto&utm_campaign=Benvenuto+Analytics

在这个链接:

https://www.example.com/firstAccess

所以,我需要删除 firstAccess 之后的所有内容。


完整的.htaccess是:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^utm_source=Newsletter&utm_medium=email&utm_content=Benvenuto+su+Magazzino+Perfetto&utm_campaign=Benvenuto+Analytics$ 重写规则 ^(firstAccess)$ /$1? [右,左]

选项 - 多视图

RewriteEngine On

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

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

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

始终设置这些标题。

标头始终设置 Access-Control-Allow-Origin "*" 标头始终设置 Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" 标头始终设置 Access-Control-Max-Age "1000" Header 总是设置 Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

重写引擎开启 RewriteCond %{REQUEST_METHOD} 选项 重写规则 ^(.*)$ $1 [R=200,L]

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    您希望删除的 URL 的附加部分是查询字符串。您需要使用 mod_rewrite 来检查查询字符串(并在不留下尾随 ? 的情况下将其删除)。

    在您的 .htaccess 文件顶部附近尝试类似以下内容:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^utm_source=Newsletter&utm_medium=email&utm_content=Benvenuto+su+Magazzino+Perfetto&utm_campaign=Benvenuto+Analytics$
    RewriteRule ^(firstAccess)$ /$1? [R,L]
    

    这与您问题中所述的确切网址匹配。

    $1 反向引用只是为了避免重复。

    替换 上的尾随? 确保从重定向的 URL 中删除查询字符串。如果使用 Apache 2.4+,那么您可以改用 QSD(查询字符串丢弃)标志。

    【讨论】:

    • 您好,感谢您的支持,但此规则不会改变任何内容。请查看链接magazzinoperfetto.cloud/…
    • 您的.htaccess 文件中还有其他指令吗?如果是这样,请将这些添加到您的问题中。
    • .htaccess 仅包含您的指令。现在我收到 404 not found 错误... :(
    • 但是您在上面发布的“完整 .htaccess 文件”不仅仅包含这些指令吗?并且在您的“完整 .htaccess 文件”中,您将这些指令放置在错误的位置 - 因此它们可能无法得到处理。正如我上面提到的,这些需要“靠近顶部”——至关重要的是,它们必须高于你的“前端控制器”。
    • 谢谢,我已经更新了.htaccess(见我的第一篇文章)但问题是一样的:(
    【解决方案2】:

    完整的.htaccess是:

    选项 - 多视图

    RewriteEngine On
    
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    
    RewriteCond %{QUERY_STRING} ^utm_source=Newsletter&utm_medium=email&utm_content=Benvenuto+su+Magazzino+Perfetto&utm_campaign=Benvenuto+Analytics$
    RewriteRule ^(firstAccess)$ /$1? [R,L]
    

    始终设置这些标题。

    标头始终设置 Access-Control-Allow-Origin "*" 标头始终设置 Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" 标头始终设置 Access-Control-Max-Age "1000" Header 总是设置 Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"

    重写引擎开启 RewriteCond %{REQUEST_METHOD} 选项 重写规则 ^(.*)$ $1 [R=200,L]

    【讨论】:

    • 您应该使用此附加信息(我刚刚为您完成)编辑您的问题 - 这不是“答案”。
    • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请包括对您的代码的解释,因为这确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因
    猜你喜欢
    • 2015-03-20
    • 2017-06-16
    • 2011-10-18
    • 2013-12-30
    • 2010-10-19
    • 2011-03-01
    相关资源
    最近更新 更多