arquivo MAMP .htaccess não está funcionando

0

Eu estou procurando por um tempo agora como habilitar arquivos .htaccess no MAMP 2.1.2

Eu tenho as seguintes configurações:

link

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

O arquivo .htaccess (Já está trabalhando no site on-line):

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

E a saída da página quando eu navego para / foo

Not Found

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

Eu tentei adicionar a seguinte linha no arquivo .htaccess Porque meu site está em: localhost / mysite / mas não teve nenhum efeito.

RewriteBase /mysite/

Acessando localhost / mysite / index.php? page = foo funciona ..

alguma idéia?

    
por spons 26.10.2013 / 18:28

3 respostas

-1

No final, descobri que não era a configuração do servidor que era o problema. Era o arquivo .htaccess que era o problema.

eu mudei:

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

Para:

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

E isso fez o trabalho.

Obrigado pela ajuda pessoal.

    
por 08.11.2013 / 18:07
1

Aqui, você está usando 2 recursos do apache:

  1. arquivos .htaccess, que são gerenciados por AllowOverride diretivas.
  2. rewrite_mod, que é um módulo do Apache.

Para ativar o gerenciamento de arquivos .htaccess, você precisa configurar a diretiva "AllowOverride" . Além disso, verifique se o AccessFileName é não modificado (caso contrário, , você deve renomear seu arquivo .htaccess para aquele configurado nesta diretiva.

Para usar a regravação de URL, o módulo rewrite_mod deve ser carregado.

Como você está recebendo um erro 404, ele indica que o AllowOverride direct não está configurado corretamente. Depois, se você estiver recebendo um erro 500, isso significa que o conteúdo do .htaccess (portanto, sua configuração de reconfiguração) tem um erro.

Para ter mais detalhes sobre as operações de reescrita, você também pode dar uma olhada no RewriteLog directiva.

Boa sorte!

    
por 07.11.2013 / 23:36
0
vi /etc/hosts

Aqui você deve ver o nome do servidor localhost.

Então faça:

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

Em vez de 000-default.conf , você pode encontrar algo semelhante. Seu site está configurado aqui? Você deveria ver aqui algo como:

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

Você pode ter qualquer AllowOverride none aqui.

Atualização:

Acho que encontrei o problema. Quando você faz:

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

você não está permitindo / na expressão regular. Então tente isto:

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

ou

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

Agora, isso deve funcionar para você em seu host local.

    
por 07.11.2013 / 17:07