Как просто добавить forward sla sh "/" к правилу перенаправления и сохранить параметры UTM / Google Tracking - PullRequest
1 голос
/ 29 января 2020

У нас были проблемы, когда коды отслеживания Google отбрасывались, потому что группа SEO / SEM не использует правильный URL-адрес, а WordPress добавляет пересылку sla * sh "/" и при этом перенаправлении сбрасывает коды.

Есть ли способ добавить правило перезаписи, которое добавляет прямую sla sh И сохраняет существующие коды UTM?

У меня возникла двойная проблема:

  1. У нас есть несколько разных страниц, на которых это происходит, поэтому слаг отличается.
  2. Я не знаю точную схему заказа UTM, потому что я не контролирую рекламную сторону. Но они продолжают обвинять мой сайт.

example.com/page1?utm_source=... необходимо перенаправить на example.com/page1/?utm_source...

# Use UTF-8 encoding for anything served text/plain or text/html
AddDefaultCharset UTF-8
# Force UTF-8 for a number of file formats
<IfModule mod_mime.c>
AddCharset UTF-8 .atom .css .js .json .rss .vtt .xml
</IfModule>
# FileETag None is not enough for every server.
<IfModule mod_headers.c>
Header unset ETag
</IfModule>
# Since we’re sending far-future expires, we don’t need ETags for static content.
# developer.yahoo.com/performance/rules.html#etags
FileETag None
# Send CORS headers if browsers request them; enabled by default for images.
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
# mod_headers, y u no match by Content-Type?!
<FilesMatch "\.(cur|gif|png|jpe?g|svgz?|ico|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>
# Allow access to web fonts from all domains.
<FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
<IfModule mod_alias.c>
<FilesMatch "\.(html|htm|rtf|rtx|txt|xsd|xsl|xml)$">
<IfModule mod_headers.c>
Header set X-Powered-By "WP Rocket/3.4.3"
Header unset Pragma
Header append Cache-Control "public"
Header unset Last-Modified
</IfModule>
</FilesMatch>
<FilesMatch "\.(css|htc|js|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
<IfModule mod_headers.c>
Header unset Pragma
Header append Cache-Control "public"
</IfModule>
</FilesMatch>
</IfModule>
# Expires headers (for better cache control)
<IfModule mod_expires.c>
    ExpiresActive on
    # Perhaps better to whitelist expires rules? Perhaps.
    ExpiresDefault                              "access plus 1 month"
    # cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
    ExpiresByType text/cache-manifest           "access plus 0 seconds"
    # Your document html
    ExpiresByType text/html                     "access plus 0 seconds"
    # Data
    ExpiresByType text/xml                      "access plus 0 seconds"
    ExpiresByType application/xml               "access plus 0 seconds"
    ExpiresByType application/json              "access plus 0 seconds"
    # Feed
    ExpiresByType application/rss+xml           "access plus 1 hour"
    ExpiresByType application/atom+xml          "access plus 1 hour"
    # Favicon (cannot be renamed)
    ExpiresByType image/x-icon                  "access plus 1 week"
    # Media: images, video, audio
    ExpiresByType image/gif                     "access plus 4 months"
    ExpiresByType image/png                     "access plus 4 months"
    ExpiresByType image/jpeg                    "access plus 4 months"
    ExpiresByType image/webp                    "access plus 4 months"
    ExpiresByType video/ogg                     "access plus 1 month"
    ExpiresByType audio/ogg                     "access plus 1 month"
    ExpiresByType video/mp4                     "access plus 1 month"
    ExpiresByType video/webm                    "access plus 1 month"
    # HTC files  (css3pie)
    ExpiresByType text/x-component              "access plus 1 month"
    # Webfonts
    ExpiresByType font/ttf                      "access plus 4 months"
    ExpiresByType font/otf                      "access plus 4 months"
    ExpiresByType font/woff                     "access plus 4 months"
    ExpiresByType font/woff2                    "access plus 4 months"
    ExpiresByType image/svg+xml                 "access plus 1 month"
    ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    # CSS and JavaScript
    ExpiresByType text/css                      "access plus 1 year"
    ExpiresByType application/javascript        "access plus 1 year"
</IfModule>
# Gzip compression
<IfModule mod_deflate.c>
# Active compression
SetOutputFilter DEFLATE
# Force deflate for mangled headers
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
# Don’t compress images and other uncompressible content
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
                                  application/javascript \
                                  application/json \
                                  application/rss+xml \
                                  application/vnd.ms-fontobject \
                                  application/x-font-ttf \
                                  application/xhtml+xml \
                                  application/xml \
                                  font/opentype \
                                  image/svg+xml \
                                  image/x-icon \
                                  text/css \
                                  text/html \
                                  text/plain \
                                  text/x-component \
                                  text/xml
</IfModule>
<IfModule mod_headers.c>
Header append Vary: Accept-Encoding
</IfModule>
</IfModule>
# END WP Rocket
# BEGIN GD-SSL
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine ON
RewriteCond %{HTTPS} On
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^handylockselfstorage\.com$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
Header add Strict-Transport-Security "max-age=300"
</IfModule>
# END GD-SSL

# BEGIN Imagify: webp file type
<IfModule mod_mime.c>
    AddType image/webp .webp
</IfModule>
# END Imagify: webp file type
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L,NE]
</IfModule>
# END WordPress
# BEGIN GA
RewriteEngine On
RewriteRule ^([\w-]+)$ /$1/ [R=302,L]
# END GA```

1 Ответ

1 голос
/ 29 января 2020

Предполагается, что у вас есть один сегмент пути, который может состоять из символов a-z, A-Z, 0-9, _ (подчеркивание) и - (дефис).

Попробуйте что-нибудь например, в верхней части вашего .htaccess файла, перед существующим фронт-контроллером WordPress:

RewriteRule ^([\w-]+)$ /$1/ [R=302,L]

Эта директива соответствует только URL-пути, а не строке запроса. Независимо от того, какая строка запроса (например, utm_source=...) присутствует в запросе (если таковая имеется), по умолчанию передается на целевой URL - вам ничего не нужно делать, чтобы включить это.

Только измените 302 (временный) перенаправить на 301 (постоянный) - если это является намерением - как только вы подтвердите, что он работает, хорошо.

ОБНОВЛЕНИЕ: Посмотрев на обновленный файл .htaccess кажется, вы поместили директивы не в том месте. Как упоминалось выше, для этого нужно go "в верхней части вашего .htaccess файла, перед существующим фронт-контроллером WordPress". Однако вы поставили его в самом конце, после фронт-контроллера WP. (Фронт-контроллер WP - это кодовый блок между # BEGIN WordPress .. # END WordPress маркерами комментариев.)

(На самом деле, я удивлен, что директива сделала бы что-нибудь, поместив ее в самый конец файла?!)

Если эту директиву немедленно поставить до , то достаточно строки # BEGIN WordPress.


В стороне:

RewriteCond %{HTTPS} On
RewriteCond %{HTTP_USER_AGENT} ^(.+)$
RewriteCond %{SERVER_NAME} ^handylockselfstorage\.com$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]

Что это должно делать? Похоже, что это должно быть перенаправление HTTP на HTTPS, однако, он ничего не делает по внешнему виду. Фактически, это очень близко к запуску перенаправления l oop, если бы вы использовали on вместо On в первом условии. Я ожидаю, что первое условие всегда будет не выполненным, поскольку HTTPS - это либо on, либо off, а не On (сравнение с учетом регистра).

...