Facebook最近添加了一个跟踪脚本/参数:&fbclid = .... 因此,当人们单击指向我的网站(作品集)的Facebook页面上的链接时,我的网站找不到正确的页面。
一个例子:
这是facebook创建的URL:http://stanbroeksteeg.nl/portfolio?video=296818340&fbclid=IwAR1OuXwzLVBQDFSgeNzCVgJ7lkCNhWeHZwhOe2vs9SmZzCYFMcBDJ6N-lX8
我的网站很快将其更改为:
http://stanbroeksteeg.nl/portfolio?video=296818340&fbclid
这导致找不到页面。所以我要做的是以下内容:
如果网址包含&fbclid,请删除此部分,并保留网址的其余部分。因此,如果我以示例网址为例,则需要这样:
http://stanbroeksteeg.nl/portfolio?video=296818340
我想出了这些重写规则:
RewriteCond %{QUERY_STRING} “fbclid=” [NC]
RewriteRule (.*) /$1? [R=301,L]
或
RewriteCond %{QUERY_STRING} ^(.*)&?fbclid=(.*)$ [NC]
RewriteRule ^/?(.*)$ /$1?%1 [R=301,L]
但是两个规则都不能解决问题。 有人可以帮我吗?
这是我当前的.htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [QSA]
SetOutputFilter DEFLATE
<FilesMatch ".(eot|ttf|otf|woff|woff2)">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
</IfModule>
答案 0 :(得分:2)
我找到了解决问题的方法
RewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+&?(.*)$ [NC]
RewriteRule ^(.*)$ /$1?%1%2 [R=301,L]
希望它将来可以帮助其他人
答案 1 :(得分:0)
@Bram的解决方案在我的Wordpress中起作用。这是.htaccess之前和之后的代码。
之前:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
之后:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)&?fbclid=[^&]+&?(.*)$ [NC]
RewriteRule ^(.*)$ /$1?%1%2 [R=301,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress