42 Stimmen

Apache-Server ignoriert .htaccess

Ich versuche, eine Website in meiner Testumgebung zum Laufen zu bringen, aber irgendwie klappt es nicht. Ich kann die normale Indexseite laden, aber wenn ich auf /page/test zugreifen möchte, wird ein Fehler ausgegeben, der besagt, dass die Seite nicht existiert. Mein Protokoll sagt:

File does not exist: /home/page_url/www/page

Was in der Tat wahr ist, aber es sollte stattdessen zu meinem Page-Controller gelangen und die Testmethode laden.

Meine .htaccess sieht wie folgt aus:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* /$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

Meine vhost-Konfiguration sieht wie folgt aus:

<VirtualHost *:80>
    ServerName page_url
    Include /etc/apache2/vhosts.d/vhco.include
    DocumentRoot "/home/page_url/www/"

    # Logging
    CustomLog /var/log/apache2/access_log common
    ErrorLog /var/log/apache2/error_log

    # This should be changed to whatever you set DocumentRoot to.
    <Directory "/home/page_url/www/">
        # 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 Indexes FollowSymLinks

        # 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>

    <IfModule alias_module>
        # Redirect: Allows you to tell clients about documents that used to
        # exist in your server's namespace, but do not anymore. The client
        # will make a new request for the document at its new location.
        # Example:
        #   Redirect permanent /foo http://www.example.com/bar

        # Alias: Maps web paths into filesystem paths and is used to
        # access content that does not live under the DocumentRoot.
        # Example:
        #   Alias /webpath /full/filesystem/path
        #
        # If you include a trailing / on /webpath then the server will
        # require it to be present in the URL.  You will also likely
        # need to provide a <Directory> section to allow access to
        # the filesystem path.

        # ScriptAlias: This controls which directories contain server scripts.
        # ScriptAliases are essentially the same as Aliases, except that
        # documents in the target directory are treated as applications and
        # run by the server when requested rather than as documents sent to the
        # client.  The same rules about trailing "/" apply to ScriptAlias
        # directives as to Alias.
        ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/"
    </IfModule>

    # "/var/www/localhost/cgi-bin" should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have that configured.
    <Directory "/home/page_url/www/">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from All
    </Directory>
</VirtualHost>

Ich benutze Gentoo.

Für jede Hilfe wären wir dankbar.

84voto

Jim Punkte 70896
<Directory "/home/page_url/www/">
    AllowOverride None

Ce site AllowOverride None Deaktiviert .htaccess Dateien nicht gelesen werden können. Siehe das Handbuch .

Bitte bedenken Sie auch, dass es nichts Magisches an .htaccess Dateien. Sie sind eine grobe Abhilfe dafür, dass Sie keinen vollen Zugriff auf die Serverkonfiguration haben. Sie sind lediglich ein Teil der Apache-Konfiguration. Wenn Sie vollen Zugriff auf die Serverkonfiguration haben, sollten Sie Dinge wie diese in die vhost-Konfiguration einfügen, nicht .htaccess Dateien.

14voto

Wie Jim schon sagte, sollten Sie, wenn Sie vollen Zugriff auf Ihren Server haben, einfach alles in die Konfigurationsdateien des Servers eintragen.

Ich bin hierher gekommen, weil ich dachte, dass mein Server meine eigenen htaccess/server Konfigurationsdateien ignoriert. Es stellte sich jedoch heraus, dass ich mod_expires und mod_rewrite deaktiviert hatte. Nachdem ich mir diese beiden Dateien angesehen hatte, funktionierte alles wieder wie es sollte.

Sie können sie durch Ausführen dieser Befehle aktivieren:

sudo a2enmod expires
sudo a2enmod rewrite

Dann starten Sie apache neu

service apache2 restart

Hoffentlich hilft das jemandem da draußen!

5voto

Michael Punkte 57

Wenn Ihre Umschreibe-Regeln immer noch nicht funktionieren, sollten Sie eines bedenken:

Aktivieren Sie auch das ModRewrite-Modul! Es ist nicht standardmäßig in Ubuntu.

Siehe andere Antwort hier wie man das macht.

0voto

In meinem Fall lag das Problem bei den Berechtigungen für die .htaccess-Datei.

Lösung:

sudo chown apache:apache .htaccess

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X