2012-11-12 1 views
5

Ich versuche, eine nicht-Zend PHP-Anwendung innerhalb eines Unterverzeichnisses einer Zend-Site zu betreiben. Ich möchte die Zend-Anwendung für alle Dateien im Unterverzeichnis '/ branches' in .htaccess umgehen. Bisher hat keine der Lösungen, die ich gefunden habe, funktioniert. Hier ist die aktuelle .htaccess Datei:Mit .htaccess Zend Framework zu umgehen und andere Framework im Unterverzeichnis

RewriteEngine on 
RewriteBase/

# WWW Resolve 
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC] 
RewriteRule ^web/content/(.*)$ http://www.domain.com/$1 [R=301,L] 

# Eliminate Trailing Slash 
RewriteRule web/content/(.+)/$ http://www.domain.com/$1 [R=301,L] 

# Route Requests 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Kann dies auch in .htaccess erreicht werden?

+0

Ich sehe hier nichts, was darauf hinweist, dass Sie irgendwelche Rewrite-Regeln im Zusammenhang mit/branches ausprobiert haben. Können Sie uns zeigen, was Sie versucht haben, was nicht funktioniert hat? Suchen Sie nach einer direkten Weiterleitung dieser Anfragen oder benötigen Sie eine eigene Rewrite-Logik? –

+0

Ich möchte einen direkten Durchgang von allem innerhalb von '/ Filialen'. Ich habe folgendes versucht: 'RewriteRule! (Zweige) $ index.php - [NC, L]' 'RewriteRule^Zweige/$ Zweige/index.php [L, QSA]' 'RewriteRule^Blog - [ NC, L] ' und viele Variationen davon. –

Antwort

1

konnte ich dieses Problem lösen, ohne .htaccess zu verändern und stattdessen nur innerhalb ‚/ content‘ mein Unterverzeichnis platzieren.

1

Sie haben zur Zeit:

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Das macht keinen Sinn, da die RewriteCond Sie angegeben haben, im Grunde nicht für die tatsächliche Dateien alles tun, Verzeichnisse und Symlinks wird nie funktionieren. Dies liegt daran, dass auf RewriteRule sofort die Regel folgt, um ALLES in index.php umzuschreiben.

Wenn Ihre Absicht ist, alles zu richten, das nicht eine Anforderung an ein reales Verzeichnis der Datei index.php ist, sollten Sie etwas wie diese:

RewriteCond %{REQUEST_FILENAME} -s 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ index.php [NC,L] 

und den Sonderfall hinzufügen /branches des Ignorierens nur eine Bedingung wie folgt hinzu:

RewriteCond %{REQUEST_FILENAME} -s 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteCond %{REQUEST_FILENAME} !^branches/ 
RewriteRule ^.*$ index.php [NC,L] 
+1

Das ist eigentlich der Standard Zend .htaccess. Die Anwendung dieser Änderungen unterbricht die Zend-Anwendung. –

+0

Das [NC, L] würde bedeuten, dass die RewriteRule keine anderen Regeln ausführt, also ja, Ryans ursprünglicher htaccess funktioniert. –