2016-10-03 1 views
2

Ich muss eine Bedingung für eine Mod-Rewrite-URL-Regel schreiben, um festzustellen, welche Seite gerade ausgeführt wird.htaccess: Bedingung, um zu überprüfen, ob die Zeichenkette in der Anfrage ist

Die RewriteRule Ich benutze funktioniert gut, aber das Problem ist, dass ich die gleiche Regel für zwei verschiedene URLs verwenden muss.

RewriteRule ^testing/([^/]*)$ /index.php?url=$1&name=&submit=submit [NC,L] 
RewriteRule ^testing/([^/]*)$ /test.php?url=$1&name=&submit=submit [NC,L] 

Ohne Umschreiben Bedingungen gesetzt, wenn example.com/testing/ im Browser die ersten RewriteRule in htaccess Zugabe wird verwendet, ob ich auf index.php oder test.php bin.

Heres ein paar der RewriteCond Ich habe versucht:
RewriteCond %{REQUEST_FILENAME} /test.php$
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (test\.php)/ [NC]
RewriteCond %{THE_REQUEST} \s/+(test\.php)/ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /test\.php/

Und Heres die volle .htaccess-Datei Code:

Options +FollowSymLinks 
RewriteEngine on 
## check if on index.php ## 
RewriteCond %{THE_REQUEST} ^.*\/index.php\/.*$ ## not working ## 
## if on index.php do this ## 
RewriteRule ^testing/([^/]*)$ /index.php?url=$1&name=&submit=submit [NC,L] 
## check if on test.php ## 
RewriteCond %{THE_REQUEST} ^.*\/test.php\/.*$ ## not working ## 
## If on test.php do this ## 
RewriteRule ^testing/([^/]*)$ /test.php?url=$1&name=&submit=submit [NC,L] 

Wie kann ich der erste (index.php) rewriteRule zu arbeiten o n index.php, aber wenn auf der test.php Seite die erste Regel ignorieren und die zweite verwenden?

Danke :)

EDIT: Nur um zu klären. Ich möchte nicht umleiten. Ich möchte nur den Wert von testing/ basierend auf welcher Seite ich bin ändern. Wie ich bereits erwähnt habe, funktioniert die rewriteRule bereits gut.

+0

Sie können das nicht tun. Mit Ihrem Link '/ testing/...' ist es nicht möglich zu wissen, ob es für 'index.php' oder für' test.php' ist. Sie können Ihre Verknüpfung mit einem Code oder Namen 'testingi' und' testingt' zum Beispiel ändern, oder 'teste/i ...' usw. – Croises

+0

Das ist, was die Bedingung sein soll. Die Idee ist, wenn 'index.php' im Skriptnamen ist, dann führe die Regel aus, wenn nicht, dann tue nicht. Wenn 'test.php' im Skriptnamen ist, dann führe diese Regel aus. wenn nicht, dann nicht. –

+0

In der URL% {HTTP_REFERER}? Da Sie Ihren Link neu schreiben, wenn Sie ihn verwenden, nicht den Skriptnamen ... – Croises

Antwort

0
## If on index.php ## 
RewriteRule "^/index\.php$" "/index.php?url=$1&name=&submit=submit" [R,L] 

Versuchen Sie, diese

+0

Es tut mir leid @Elby Ich denke, Sie haben vielleicht etwas missverstanden. Die Regel funktioniert gut. Die URL nach dem Mod-Rewrite würde folgendermaßen aussehen: 'example.com/testing/youtube.com' (youtube.com ist nur ein Beispiel) –

0
RewriteEngine On 

#Checking if /index.php/ apears in URI 
RewriteCond %{REQUEST_URI} ^(.*)\/index\.php\/(.*)$ [NC] 
RewriteRule ^(.*)$ testing/index.php?url=$1&name=&submit=submit [NC] 

diese index.php zeigen? Url = sth1/index.php/STH2 Ausgang statt sth1/index.php/STH2

Viel Glück

+0

Ich möchte nicht umleiten. Ich muss den Wert von "Testing /" basierend auf der Seite, auf der ich bin, ändern. –

+0

@ turrican_34, Können Sie bitte mehr mit einem Beispiel erklären? –

+0

Ich habe die Kommentare im vollen Htaccess-Code aktualisiert. Welchen Teil verstehst du nicht? –

Verwandte Themen