Saya memiliki situs web yang awalnya dibangun menggunakan ASP klasik. Sekitar setahun yang lalu ditulis ulang dalam PHP. Ini menyebabkan ekstensi file berubah dan beberapa halaman dipindahkan ke lokasi baru di dalam situs web. Tentu saja kami melakukan 301 pengalihan dari URL lama ke URL baru sehingga pengguna dan mesin pencari mereka dapat menemukan lokasi baru mereka. Ini berfungsi dengan baik.
Kami juga membuat mereka alat yang memungkinkan pemilik situs untuk membuat URL kecil mereka sendiri yang akan mengarahkan ulang ke halaman dengan variabel pelacakan kampanye Google Analytics yang termasuk dalam URL sehingga mereka dapat melacak kampanye dan melihat kinerjanya.
Masalah yang saya miliki adalah konflik aturan pelacakan kampanye dengan pengalihan 301 dan mencegah pengalihan bekerja sama sekali.
Ini kode pelacakan kampanye:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /tracking.php?$1 [R=301,L]
Seperti yang Anda lihat, ini memeriksa untuk melihat apakah ada file dan apakah itu tidak diarahkan ke skrip pelacakan (tracking.php) yang kemudian mengambil kode pelacakan dan mengalihkan ke URL yang tepat dengan kode kampanye Google Analytics dalam kueri tali.
Kode itu menyebabkan aturan seperti ini gagal:
redirect 301 /about.asp /about.php
redirect 301 /capabilities.asp /capabilities.php
redirect 301 /capacitors.asp /capacitors.php
Masuk akal bahwa ini tidak bekerja bersama karena aturan pelacakan mengatakan, "jika file tidak ditemukan redirect ke tracking.php". Yang saya butuhkan adalah pengalihan 301 dijalankan terlebih dahulu, dan jika tidak ada yang cocok, maka arahkan ke skrip pelacakan. Menempatkan aturan pelacakan di bawah pengalihan 301 tidak mengubah hasil.
Bisakah ini dilakukan melalui .htaccess? Atau akankah saya perlu memodifikasi skrip pelacakan sehingga jika suatu kampanye tidak ditemukan akan memeriksa untuk melihat apakah ID kampanye sebenarnya adalah halaman lama yang perlu diarahkan dan kemudian melakukan 301 redirect dari sana?