переписать многоуровневый URL и поместить строку запроса в конец - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь добавить строку запроса ко всем URL 2-го и 3-го уровня на веб-сайте, который не содержит строку запроса.

В данный момент я нахожусь здесь:

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ /?features_hash=314-44914 [L,R=301,NC]

, который перенаправляет только домашнюю страницу с https://www.website.com/ на https://www.website.com/?features_hash=314-44914

Все остальные уровни перенаправляются на дом.

I также пробовал:

RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$ /?features_hash=314-44914 [L,R=301,NC]

, который работает только на домашней странице, а остальное дерево игнорирует его. Без изменений там. Мне нужно иметь

и т. Д.

В принципе, я не против, если запрос будет добавлен на первой странице. Не имеет никакого значения. Мне это нужно, хотя на 2-м, 3-м и 4-м уровнях. Фактически на всех уровнях веб-сайта.

Таким образом, предлагаемое решение все еще не работает. Это выглядит правильно, но не работает в данный момент. Он перенаправляет все URL-адреса домой с запросом. Таким образом, уровни URL теряются и сворачиваются все до дома.

Поэтому я подумал, что может возникнуть проблема с остальными условиями перезаписи в htacess. Может быть, весь файл может помочь:

RewriteEngine on

RewriteRule ^init.php$ - [F,L,NC]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(favicon|apple-touch-icon-|homescreen-|firefox-icon-|coast-icon-|mstile-).*\.(png|ico)$ - [R=404,NC,L]

RewriteCond %{REQUEST_URI} ^api/(.*)$ [or]
RewriteCond %{REQUEST_URI} .*/api/(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*api/(.*)$ api.php?_d=$1 [L,QSA]

RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml)$ [NC,or]
RewriteCond %{REQUEST_URI} store_closed.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*?)\/(.*)$ $2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L,QSA]

# Solution Suggested by anubhava - Thank you!
RewriteCond %{QUERY_STRING} !(^|&)features_hash= [NC]
RewriteRule ^ %{REQUEST_URI}?features_hash=314-44914 [L,R=301,NC,QSA]

1 Ответ

1 голос
/ 10 апреля 2020

Вы можете использовать правило перенаправления generi c, чтобы добавить features_hash=314-44914, если параметр запроса features_hash не существует:

RewriteCond %{QUERY_STRING} !(^|&)features_hash= [NC]
RewriteRule ^ %{REQUEST_URI}?features_hash=314-44914 [L,R=301,NC,QSA]
...