MAMP-.htaccess-Datei funktioniert nicht

0

Ich suche nun schon eine Weile, wie .htaccess-Dateien in MAMP 2.1.2 aktiviert werden können

Ich habe folgende Einstellungen:

httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so
...
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Applications/MAMP/htdocs"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories). 
#
# First, we configure the "default" to be a very restrictive set of 
# features.  
#
<Directory />
    Options Indexes FollowSymLinks
    AllowOverride All
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/Applications/MAMP/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options All

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>
...
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride 
# directive.
#
AccessFileName .htaccess

Die .htaccess-Datei (Sie arbeiten bereits auf der Online-Website):

RewriteEngine on
RewriteRule ^([a-z\-]+)$ /index.php?page=$1 [L]

Und die Seitenausgabe, wenn ich zu / foo navigiere

Not Found

The requested URL /index.php was not found on this server.

Ich habe versucht, die folgende Zeile in die .htaccess-Datei einzufügen Da sich meine Website befindet: localhost / mysite / hatte jedoch keine Auswirkungen.

RewriteBase /mysite/

Zugriff auf localhost / mysite / index.php? Page = foo funktioniert.

irgendwelche Ideen?

spons
quelle

Antworten:

1

Hier verwenden Sie 2 Funktionen von Apache:

  1. .htaccess-Dateien, die von verwaltet werden AllowOverride richtlinien.
  2. rewrite_mod ist ein Modul von Apache.

Um die .htaccess-Dateiverwaltung zu aktivieren, müssen Sie konfigurieren "AllowOverride" Richtlinie. Überprüfen Sie auch, dass die AccessFileName ist Nicht modifiziert (Andernfalls sollten Sie Ihre .htaccess-Datei in die in dieser Anweisung konfigurierte umbenennen.

Um das URL-Überschreiben zu verwenden, muss das Modul verwendet werden rewrite_mod muss geladen sein

Wenn Sie einen Fehler 404 erhalten, wird darauf hingewiesen, dass die AllowOverride direct ist nicht richtig konfiguriert. Wenn Sie nach 500 einen Fehler erhalten, bedeutet dies, dass die Inhalt der .htaccess (also Ihre Konfiguration zum Umschreiben) hat einen Fehler

Um weitere Informationen zu den Umschreibungsvorgängen zu erhalten, können Sie auch die RewriteLog Richtlinie.

Viel Glück !

Adrien M.
quelle
Ich liebe deinen Beitrag, er hat eine Erklärung. Ich werde ein paar Dinge mit dem AllowOverride noch einmal versuchen, aber wie ihr in meiner Config in meinem ersten Post sehen könnt. Alle AllowOverride-Optionen sind auf All gesetzt. Wenn Sie weitere Ideen zu meinem Problem haben, höre ich sie gerne.
spons
Ich belohne Sie mit den Punkten für die klare Erklärung zu Error = & gt; Lösung!
spons
0
vi /etc/hosts

Hier sollte der Name des localhost-Servers angezeigt werden.

Dann mach:

vi /etc/apache2/sites-avaiable/000-default.conf

Anstatt 000-default.conf, Sie können etwas Ähnliches finden. Ist Ihre Site hier konfiguriert? Sie sollten hier etwas sehen wie:

<VirtualHost *:80>
ServerName localhost

    ServerAdmin webmaster@localhost
    DocumentRoot /Applications/MAMP/htdocs
            <Directory />
                            Order Deny,Allow
                            Deny from all
                            Options None
                            AllowOverride None
            </Directory>
            <Directory /Applications/MAMP/htdocs>
                            Options +FollowSymLinks +MultiViews
                            AllowOverride All
                            Order allow,deny
                            allow from all
                            Require all granted
            </Directory>

</VirtualHost>

Sie haben vielleicht welche AllowOverride none Hier.

Aktualisieren:

Ich glaube, ich habe das Problem gefunden. Wenn Sie das tun:

RewriteEngine on
RewriteRule ^([a-z\-]+)$ /index.php?page=$1 [L]

du erlaubst nicht / im regulären Ausdruck. Also probiere es aus:

RewriteEngine on
RewriteRule ^(mysite/)?([a-z\-]+)$ /$1index.php?page=$1 [L]

oder

RewriteEngine on
RewriteRule ^([a-z\-]+)/([a-z\-]+)$ /$1/index.php?page=$2 [L]

Nun sollte es für Sie in Ihrem localhost funktionieren.

Manolo
quelle
Ich liebe die Erklärung, aber ich glaube nicht, dass ich in diesen Apache-Server gehen möchte. Der Apache-Server für mich ist im Ordner / Applications / MAMP meines Macbooks konfiguriert. Außerdem ändern die von Ihnen bereitgestellten Änderungen nichts an der Situation, aber danke für die Mühe.
spons
-1

Am Ende fand ich heraus, dass nicht die Serverkonfiguration das Problem war. Das Problem war die .htaccess-Datei.

Ich habe mich verändert:

RewriteEngine on
RewriteRule ^([a-z\-]+)$ /index.php?page=$1 [L]

Zu:

RewriteEngine on
RewriteRule ^([a-z\-]+)$ index.php?page=$1 [L]

Und das hat den Job gemacht.

Danke für die Hilfe Jungs.

spons
quelle