2016-12-03 3 views
0

Meine Anforderung ist, dass, wenn eine Anfrage kam {{host}}/t1/batch, dass es sollte lesen von batch.php sonst jede Anfrage sollte aus index.php lesen. Mein Basisverzeichnis ist t1. Ich mache ein Experiment in htaccess. Ich vermisse regulären Ausdruck.How to write schreiben Weg basierte Httaccess Rewrite zu bestimmten PHP-Datei

RewriteCond %{REQUEST_URI} ^/t1/batch/$ 
RewriteRule ^.*$ %{DOCUMENT_ROOT}/batch.php [L,NC,END] 
RewriteRule ^.*$ %{DOCUMENT_ROOT}/index.php 

Ich sehe nicht, die für RewriteBase Notwendigkeit hier:

RewriteBase /t1 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(batch|index)/?$ $1.php [L,NC] 

Antwort

0

t1 Unter der Annahme, ist ein Unterverzeichnis des Dokuments Wurzel, in /t1/.htaccess setzen diese:

RewriteEngine on 
RewriteBase /t1/ 
# no rewrites for real files and directories 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [NS,L] 
# batch 
RewriteRule ^batch(?=$|/) $0.php [NS,L] 
# everything else 
RewriteRule ^(?!index\.php$). index.php [NS,L] 

Wenn Sie Umschreiben in /.htaccess haben, als auch, müssen Sie das t1 Unterverzeichnis in ignorieren Diese Datei mit einer Regel wie:

RewriteRule ^t1(?:$|/) - [L] 
+0

Es funktioniert perfekt. Vielen Dank. –

0

Dies kann mit den folgenden Regeln erreicht werden.

0

Sie können es mit den folgenden Zeilen getan:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/t1/batch/?$ 
RewriteRule ^(.*)$ batch.php [L,NC] 

Wenn Sie batch.php unter t1 Verzeichnis haben und der Weg wie http://{host}/t1/batch.php ist, müssen Sie RewriteBase Zeile hinzufügen:

RewriteBase /t1 

Wenn Wenn Sie die RewriteBase-Zeile nicht hinzufügen, müssen Sie dem absoluten Pfad folgen:

RewriteRule ^.*$ /t1/batch.php [L,NC] 

Ich hoffe, Sie verstehen und haben die Lösung.