Apache 删除utm_源参数并用htaccess替换索引

Apache 删除utm_源参数并用htaccess替换索引,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我试图做的是删除utm_source参数,然后用我的index2.html文件替换任何请求 这就是我所尝试的: # BEGIN <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} "utm" [NC] RewriteRule ^(.*)?$ "index2.html$1" [QSA,L] RewriteRule (.*) /$1? [R=301,L,QSD] <I

我试图做的是删除
utm_source
参数,然后用我的
index2.html
文件替换任何请求

这就是我所尝试的:

# BEGIN
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} "utm" [NC]
RewriteRule ^(.*)?$ "index2.html$1" [QSA,L]
RewriteRule (.*) /$1? [R=301,L,QSD]
<IfModule mod_rewrite.c>
# END
我想要的是使用这行代码
RewriteRule^(.*)$“index2.html$1”[QSA,L]
,然后删除
utm_source
参数,但我无法执行此操作


更糟糕的是,到目前为止,我一次只能做一件事。如果删除该参数,请不要执行其他操作。

假设您的
.htaccess
文件位于文档根目录中

要仅删除
utm_source
URL参数(而不是所有参数),可以先执行以下操作:

RewriteCond %{QUERY_STRING} ^(.*)&?utm_source=[^&]*&?(.*)$
RewriteRule (.*) /$1?%1%2 [R=302,L]
然后,要将所有请求重写到
index2.html
,您可以执行以下操作(假设您不想同时重写对现有文件的请求):

但是,在您的指令中,您并不是简单地重写到
index2.html
,您还试图附加其他路径名信息(路径信息)-这是必需的吗?虽然在代码中缺少斜杠(在
.htaccess
中使用时),但重写的格式可能不正确,并导致404。如果您需要路径信息,请将最后一个
重写规则更改为:

RewriteRule (.*) index2.html/$1 [L]
总结 不需要
包装器,因为如果没有mod_重写,您的代码可能无法工作?如果
.htaccess
文件位于文档根目录中,则无需执行
RewriteBase
指令


您当前的指令存在许多问题。一对与众不同的夫妇

  • 规则的顺序错误,因为检查查询字符串的条件只适用于后面的第一个
    重写规则。因此,最后一个重写规则(即您说的“删除utm_源参数”)将无条件执行,并将导致重定向循环

  • 第一条规则(重写为
    index2.html$1
    )只有在查询字符串(未删除)中的“utm”(任何位置)出现时才会执行。但是
    index2.html$1
    将导致在
    .htaccess
    中进行无效重写(如上所述-缺少斜杠)

  • 上一条规则删除整个查询字符串,而不仅仅是
    utm\u source
    参数。但第一条规则尝试将查询字符串附加到重写的请求

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index2.html [L]
RewriteRule (.*) index2.html/$1 [L]
RewriteEngine On

# Remove the "utm_source" URL parameter
RewriteCond %{QUERY_STRING} ^(.*)&?utm_source=[^&]*&?(.*)$
RewriteRule (.*) /$1?%1%2 [R=302,L]

# Rewrite all requests to "index2.html"
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index2.html [L]
RewriteCond %{QUERY_STRING} "utm" [NC]
RewriteRule ^(.*)?$ "index2.html$1" [QSA,L]
RewriteRule (.*) /$1? [R=301,L,QSD]