Mam stronę internetową, która została zbudowana przy użyciu klasycznej ASP. Około rok temu został przepisany w PHP. Spowodowało to zmianę rozszerzeń plików i niektóre strony zostały przeniesione do nowych lokalizacji w witrynie. Oczywiście zrobiliśmy 301 przekierowań ze starych adresów URL na nowe adresy URL, aby ich użytkownicy i wyszukiwarki mogli znaleźć nowe lokalizacje. To działa dobrze.
Zbudowaliśmy również narzędzie, które pozwala właścicielowi witryny tworzyć własne małe adresy URL, które przekierowują na stronę ze zmiennymi śledzenia kampanii Google Analytics zawartymi w adresie URL, aby mogli śledzić kampanię i sprawdzać jej skuteczność.
Mam problem z tym, że reguły śledzenia kampanii są w konflikcie z przekierowaniami 301 i w ogóle nie działają.
Oto kod śledzenia kampanii:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Jak widać, sprawdza, czy plik istnieje, a jeśli nie, przekierowuje do skryptu śledzenia (tracking.php), który następnie pobiera kod śledzenia i przekierowuje na właściwy adres URL z kodem kampanii Google Analytics w zapytaniu strunowy.
Ten kod powoduje awarię takich reguł:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Ma to sens, że nie działa to razem, jak mówią reguły śledzenia: „jeśli plik nie zostanie znaleziony, przekieruj do tracking.php”. Potrzebuję, aby najpierw uruchomiono przekierowania 301, a jeśli żadne z nich nie pasuje, następnie przekieruj do skryptu śledzenia. Umieszczenie reguł śledzenia poniżej przekierowań 301 nie zmienia wyników.
Czy można to zrobić poprzez .htaccess? Czy też będę musiał zmodyfikować skrypt śledzenia, aby jeśli kampania nie została znaleziona, sprawdza, czy identyfikator kampanii jest rzeczywiście starą stroną, którą należy przekierować, a następnie przekierowuje stamtąd 301?
[R=301,L]
przyczyną problemu jest brak przekierowania po każdym przekierowaniu. Pozwól, że spróbuję, a dam ci znać, co się stanie.*.asp -> *.php
wieloznaczny działa świetnie. Indywidualne reguły dla stron, które nie są bezpośrednim przejściem i mają ciągi zapytań, są kłopotliwe. Ale wydaje się, że to właściwa droga. Jeśli nie uda mi się rozwiązać tej części, zacznę nowe pytanie na ten temat.Odwróciłbym przekierowanie i pozostawił je tak, jak było pierwotnie. Przekieruj swoją NOWĄ witrynę do swojej starej witryny. Twoja stara witryna prawdopodobnie już korzysta z linków zwrotnych, wieku witryny i SEO. Szkoda byłoby stracić to, po prostu zastąpić ją nowszą witryną o niższym rankingu strony. Google karze przekierowania. Twoja NOWA witryna nie będzie jeszcze zawierać SEO, więc lepiej użyć przekierowania na tej stronie :)
źródło