2012-04-14 14 views
0

Ich habe eine Mod Neuschreiben auf localhost, aber nicht in godaddy shared Host.godaddy - htaccess Bedingung funktioniert nicht

Options -Multiviews 
Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{DOCUMENT_ROOT}/WebShop/View/public%{REQUEST_URI} -f 
RewriteRule ^(.*)$ WebShop/View/public/$1 [L] 

RewriteRule ^(.*)$ entryPoint.php [QSA,L] 

Das Problem ist mit dem RewriteCond-Teil. Es kann die vorhandenen Dateien im Unterordner nicht finden. Ich habe versucht mit absolutem Pfad, relativem Pfad, Neuschreibungsbasis alles, aber keiner von ihnen hat funktioniert. Godaddy gewährt keinen Zugang zum Rewritelog ... Irgendeine Idee, wie man dieses Problem löst?

Edit:

Die .htaccess in einem Unterordner ist, und im Document-Root ist eine .htaccess, die die Anforderung von Domain in Unterordner teilt:

Options -Multiviews 
Options +FollowSymLinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$ 
RewriteRule ^(.*)$ %1/$1 [L,QSA] 

Und das eigentliche Problem ist, dass die% {REQUEST_URI} in der .htaccess des Unterordner den Namen des Unterordners enthält auch: S

Edit2:

Ok Ich habe eine Teillösung:

Options -Multiviews 
Options +FollowSymLinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$ 
RewriteCond %{DOCUMENT_ROOT}/%1/WebShop/View/public/%2 -f 
RewriteRule ^(.*)$ entryPoint.php?file=%2 [L] 

RewriteRule ^(.*)$ entryPoint.php [QSA,L] 

Dies gibt den Dateinamen, falls vorhanden, aber es ist eine Art von Witz, verursachen, wenn ich die zweite Regel zu

RewriteRule ^(.*)$ x.php [QSA,L] 

alles geht dann ändern die x.php. Ich frage mich, warum Mod Rewrite nie die L-Flagge erkennen?

(gehen ein Bier trinken)

Antwort

0

Es ist vielleicht wegen irgendeine Art von seltsamen Verzeichniseinstellungen, aber wenn Sie in ein Unterverzeichnis auf einem GoDaddy-Server umleiten, müssen Sie dort eine leere .htaccess-Datei erstellen mit RewriteEngine On, sonst wird es nicht funktionieren.

Der vorstehende Code im edit2 Abschnitt funktioniert gut, aber nicht auf einem GoDaddy-Server ... Hier ist die Dateizugriffs Version davon:

Options -Multiviews 
Options +FollowSymLinks 

RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_URI} ^/([^/]+)/(.*)$ 
RewriteCond %{DOCUMENT_ROOT}/%1/WebShop/View/public/%2 -f 
RewriteRule ^(.*)$ WebShop/View/public/%2 [L] 

RewriteRule ^(.*)$ entryPoint.php [QSA,L] 

Und legte ich eine leere .htaccess-Datei mit RewriteEngine Ein im Verzeichnis "WebShop/View/public", das das L-Flag-Problem behob.

Verwandte Themen