2011-01-11 8 views
2

(Nicht sicher, ob das hier oder auf Webmaster gehört; bitte bewegen Sie, wenn nötig.)Neuling - was muss ich mit httpd.conf tun, damit CakePHP korrekt funktioniert?

Ich bin ein totaler Neuling zu Kuchen und nicht viel besser mit Apache; Ich habe viel PHP gemacht, aber immer mit einem Server, der bereits von jemand anderen eingerichtet wurde. So werde ich durch die basic blog tutorial, und es sagt:

Ein Hinweis zu mod_rewrite Gelegentlich wird ein neuer Benutzer in laufen Probleme mod_rewrite, also werde ich sie marginal hier erwähnen. Wenn die Cake-Begrüßungsseite ein wenig witzig aussieht ( ) (keine Bilder oder CSS-Stile), bedeutet das wahrscheinlich, dass mod_rewrite nicht auf Ihrem System funktioniert. Hier sind einige Tipps, damit Sie aufstehen und läuft:

Vergewissern Sie sich, dass eine .htaccess-Überschreibung erlaubt ist: in Ihre httpd.conf, sollten Sie einen Abschnitt haben, der für jedes Verzeichnis auf dem Server einen Abschnitt definiert . Stellen Sie sicher, dass AllowOverride für das richtige Verzeichnis auf Alle festgelegt ist.

Stellen Sie sicher, dass Sie das System httpd.conf statt einer benutzer- oder Site-spezifischen httpd.conf bearbeiten.

Aus irgendeinem Grund haben Sie möglicherweise eine Kopie von CakePHP ohne die erforderlichen .htaccess-Dateien erhalten. Dies passiert manchmal, weil einige Betriebssysteme Dateien behandeln, die mit '.' Beginnen. wie versteckt, und kopieren Sie sie nicht. Stellen Sie sicher, dass Ihre Kopie von CakePHP aus dem Download-Bereich der Website oder unserem SVN-Repository stammt.

Stellen Sie sicher, mod_rewrite korrekt geladen werden up! Sie sollten so etwas wie LoadModule- rewrite_module libexec/httpd/mod_rewrite.so und AddModule mod_rewrite.c in httpd.conf sehen.“

ich XAMPP auf Linux bin mit. Ich habe festgestellt meine httpd.conf Datei in opt/lampp/ etc, aber ich bin nicht sicher, was ich mit ihm tun müssen, ich habe für „umschreiben“ gesucht, und es gibt nur eine Linie.

LoadModule- rewrite_module modules/mod_rewrite.so

Es gibt nichts über AddModule mod_rewrite.c.

Erstelle ich einfach einen Verzeichnis-Abschnitt für das Verzeichnis, das ich installiert habe Kuchen in und AlllowOverride auf alle? (Ich habe ein separates Unterverzeichnis meines wwwroot erstellt und dort installiert, da ich auch Installationen von Joomla und CodeIgniter installiert habe.) Gibt es noch etwas, das ich brauche, um zu tun? Mein Download von Cake kam mit zwei Dateien vom Typ htaccess (._. Htaccess und .htaccess) - muss ich irgendetwas mit ihnen machen?

Vielen Dank für jegliche Hilfe, die Sie diesem Nicht-Server-Administrator zur Verfügung stellen können.

EDIT virtuelle Host Probe hinzu:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot /www/docs/dummy-host.example.com 
    ServerName dummy-host.example.com 
    ServerAlias www.dummy-host.example.com 
    ErrorLog logs/dummy-host.example.com-error_log 
    CustomLog logs/dummy-host.example.com-access_log common 
</VirtualHost> 

Antwort

1

Schritt 1. Sie sollten mod_rewrite aktiviert haben, überprüfen Sie <?php phpinfo(); mit

Schritt 2. Überprüfen Sie AllowOverride

// I believe you already did that. 
// Make sure you are doing it for the correct webroot! 
<Directory /> 
    AlllowOverride to All 
</Directory> 

Schritt 3. Überprüfen Sie die Standard .htaccess Dateien sind in den Verzeichnissen /mypro, /mypro/app, /mypro/app/webroot.

Schritt 4. .htaccess kann Pfadkorrekturen abhängig von Ihrer Kuchenprojektinstallation benötigen.

e.g. project url http://localhost/mypro/app/webroot/ 
/mypro/app/webroot/.htacess 
<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ mypro/app/webroot/ [L] 
    RewriteRule (.*) mypro/app/webroot/$1 [L] 
</IfModule> 

EDIT

Wenn Sie die Einrichtung als lokale Domänen versuchen, Setup-lokale Domains (unter Windows) mit WAMP konfiguriert Hinweis: Diese ein wenig für verschiedene Arten von Anlagen optimiert werden kann finden Sie Ihre Hosts-Datei (Mine befindet sich unter C: \ WINDOWS \ system32 \ drivers \ etc \ hosts) Legen Sie diese nach unten

# save and close this file named hosts 
127.0.0.1  mypro.localhost 

um den Hostnamen o zu testen Stift Eingabeaufforderung und führen Sie Ping Mypro.localhost # If ping is good then move on

Now open your apache config file 
httpd.conf and httpd-vhosts.conf (my files are located at) 

C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf 
# uncomment line below 
Include conf/extra/httpd-vhosts.conf 
C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf 
# Insert virtual host entries like this, trim dummy entries (if any) 

# Changing DocumentRoot 
<VirtualHost *:80> 
    DocumentRoot "C:/wamp/www" 
    ServerName localhost 
</VirtualHost> 
<VirtualHost *:80> 
    DocumentRoot "C:/wamp/www/mypro/app/webroot" 
    ServerName mypro.localhost 
</VirtualHost> 

Speichern und Schließen von Dateien

erstellen Verzeichnis C:/wamp/www/MyPro (wenn Sie nicht vorher erstellt haben)

+0

Danke für alle Informationen, aber wie ich im OP gesagt habe, verwende ich XAMPP unter Linux, so dass alle Windows-spezifischen Informationen nicht wirklich helfen. In welchem ​​Schritt verweist mypro auch auf Ihren dritten Schritt? Ich habe keine Verzeichnisse namens mypro. – EmmyS

+0

'mypro' ist Abkürzung für' mein Projekt' Dies ist der Name Ihres Projekts. – Ish

+0

für Linux-Installation ersetzen Sie alle Pfad zu Ihnen aktuelle Installation. z.B. "C:/wamp/www/mypro" könnte durch "/ var/www/vhosts/mypro" ersetzt werden – Ish

0

ModRewrite Apache Anforderungs-URLs manipulieren kann, bevor die Anforderung verarbeitet. Wenn Sie beispielsweise Ihre Bilder in /website_images speichern möchten, diese aber in Ihrem HTML-Code als /img/donkey.jpg referenzieren möchten, können Sie mit ModRewrite alle Anforderungen von /img/* in /website_images/* ändern. Die Art, wie dies gehandhabt wird, geschieht durch Reguläre Ausdrücke, über die ganze Bücher geschrieben wurden.

Soweit Apache geht, gibt es viele Konfigurations "Direktiven" (aka Optionen oder Einstellungen). Das Wichtigste, um zu lernen, wenn Sie Ihren eigenen Server betreiben, werden die VirtualHost sein. Sie ermöglichen es Apache, Anfragen an die IP-Adresse Ihres Servers zu bearbeiten und sie auf der Grundlage des Hostnamens (im Wesentlichen der Domäne) an die richtige Website weiterzuleiten. Sie sollten alle website-spezifischen Anweisungen innerhalb der VirtualHost-Konfiguration dieser Website platzieren, einschließlich Ihrer ModRewrite-Regeln. Hinweis: Sie können auch zusätzliche Direktiven aus einer .htaccess-Datei in das Website-Verzeichnis laden, aber dies ist suboptimal (und erfordert AllowOverride. Wenn Sie Zugriff auf httpd.conf und die zugehörigen VirtualHost-Direktiven haben, sollten Sie sie stattdessen verwenden.

Offenbar ist Apache bereits so konfiguriert, dass das ModRewrite-Modul geladen wird, Sie müssen das also nicht ändern.In den VirtualHost-Anweisungen für Ihre neue CakePHP-Website können Sie die folgenden Anweisungen unter <Directory /path/to/your/website> verwenden, um ModRewrite einzurichten:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

es sieht groß und beängstigend, aber das, was tut, ist, dass Apache alle Anfragen zu richten, die sie nicht verarbeiten kann (weil die Ressourcen nicht ex tun ist) zu index.php. Wenn dies geschieht, übernimmt CakePHP und leitet die Anfrage an den entsprechenden Controller und die entsprechende Aktion weiter.

Ich bin nicht vertraut mit, wie XAMPP konfiguriert ist, also kann ich Ihnen nicht sagen, wo diese VirtualHost-Definitionen sein werden. Vielleicht kann jemand anderes hier läuten ...

+0

Danke für die Info, Corey! In meiner Hauptdatei httpd.conf gibt es eine Zeile, die sagt: # Virtuelle Hosts #Include etc/extra/httpd-vhosts.conf - Ich habe ein Beispiel von dem, was in der Datei ist, zu dem OP oben hinzugefügt; kopiere ich einfach den ganzen Block und ersetze *: 80 mit meinem App-Pfad? – EmmyS

+0

Das würde mich glauben machen, dass Apache so konfiguriert ist, dass es ohne VirtualHosts läuft. Sie können dies tun, aber es bedeutet, dass Sie nur eine Website gleichzeitig ausführen können. Wenn Sie damit einverstanden sind, können Sie nach vorhandenen '' - Zeilen suchen, die auf Ihre Anwendung verweisen, und den darin enthaltenen Rewrite-Code hinzufügen. Wenn Sie VirtualHosts verwenden möchten, dann hören Sie sich an, als ob Sie auf dem richtigen Weg sind. Auskommentierung der Include-Zeile und Öffnen der Datei httpd-vhosts.conf, um die Rewrite-Anweisungen hinzuzufügen. – coreyward

+0

Und fügen Sie dann Ihren IfModule-Codeblock in den VirtualHost-Block ein? – EmmyS

Verwandte Themen