2016-04-19 4 views
1

Das Abrufen ist meine .htaccess:eine Abfragezeichenfolge in .htaccess Flagging und es in PHP

RewriteEngine On 
RewriteCond %{ENV:REDIRECT_STATUS} !^$ 
RewriteRule .* - [L] 

RewriteCond %{QUERY_STRING} ^(.+)$ [OR] 
RewriteCond %{REQUEST_URI} ^(.*)\?(.+)$ 
RewriteRule .* - [ENV=HASQSTRING:1] 

# miscellaneous rewriterules to redirect pages. 
# No environment variables changed here 

Das ist mein PHP-Code ist:

<?php 
    echo "QS=".$_ENV['HASQSTRING']; 
?> 

und ich diesen PHP-Code selbst versucht:

<?php 
    echo "QS=".$_SERVER['HASQSTRING']; 
?> 

ich erhalte dieses Ergebnis jedes Mal: ​​

Notice: Undefined index: HASQSTRING in (php filename) on line 2 

und die URL ich mit immer muss es einen Abfrage-String zu testen bin wie:

http://localhost.local/?a=1 
http://localhost.local/?a=1&b=2 
http://localhost.local/help/?a=1&b=2 

Wie kann ich meine .htaccess beheben, so dass, wenn eine Abfrage-String in der ursprünglichen URL vorhanden ist (nicht in der internen umgeleiteten URL, die mod_rewrite generiert, der Wert von HASQSTRING ist gleich 1?

Ich habe versucht, den Wert von REDIRECT_STATUS prüft, aber es will immer einen Wert von 200.

Antwort

1

Sie es wie folgt verwenden können, um zurückzukehren:

RewriteCond %{ENV:REDIRECT_STATUS} . 
RewriteRule^- [L] 

RewriteCond %{QUERY_STRING} ^(.+)$ 
RewriteRule^- [E=HASQSTRING:%1] 

dann innerhalb von PHP-Code verwenden

<?php 
    echo "QS=" . $_SERVER['HASQSTRING']; 
?> 
Verwandte Themen