Chcę mod_rewrite URL do innej strony, ale potem również chcę, aby wszelkie ciągi kwerend dodane zostały zachowane.Jak mogę mod_rewrite i zachować ciągi zapytania?
RewriteEngine On
#enforce trailing slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/siteroot/$1/ [L,R=301]
RewriteRule ^apps/([A-Za-z0-9-_]+)/?$ index.php&app=$1
Więc jeśli użytkownik odwiedza apps/app1/
, index.php?app=app1
pokazano. Jednak chcę zachować opcjonalne łańcuchy zapytań, aby odwiedzający apps/app1/?variable=x
wrócił index.php?app=app1&variable=x
.
Jaka zasada/warunek mod_rewrite spowodowałby to?
Dzięki, nie zdawałem sobie sprawy, że to było takie proste. –
+1 Zgadzam się z @DanielOakey .. Próbowałem zhackować coś z regexem i nie działało .. –
Aby wyjaśnić, nie chodzi o przepisywanie w stosunku do przekierowań. http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsa mówi: Gdy zastępczy identyfikator URI zawiera ciąg zapytania, domyślne zachowanie RewriteRule polega na odrzuceniu istniejącego ciągu zapytania i zastąpieniu go z nowo wygenerowanym. Używanie flagi [QSA] powoduje łączenie ciągów zapytań. –