mod_rewrite e PATH_INFO com projeto php

2

Eu tenho um projeto que lê a variável $_SERVER['PATH_INFO'] ao carregar páginas, portanto lê páginas no formato de link e Eu gostaria de usar o mod_rewrite para remover a parte index.php da url e fazer o link da URL anterior. Se alguém visita o link , ele precisa carregar a página como se essa pessoa tivesse visitado link .

Com o Nginx, a seguinte configuração funciona e a reescrita ...

server {
    listen       80;
    server_name  localhost;

    root   /srv/http/web/html;
    index  index.php;

    location ~ ^/[^/]+\.php($|/) {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_split_path_info ^(/[^/]+\.php)(/.*)$;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO        $fastcgi_path_info;
        include        fastcgi_params;
    }

    location ~ .* {
        rewrite ^/(.*)$ /index.php/$1 last;
    }
}

Como eu conseguiria isso no apache? Eu atualmente tenho que trabalhar para que a raiz exibe corretamente e escrevendo urls com a parte index.php funciona. Como posso fazer a regra de reescrita funcionar e ainda ser capaz de usar a variável $_SERVER['PATH_INFO'] ? O que eu poderia colocar no .htaccess para fazê-lo funcionar?

    
por markzz 31.03.2016 / 00:48

1 resposta

2

Você não pode alterar diretamente a variável $_SERVER["PATH_INFO"] de dentro do apache quando o php é compilado como um módulo.

Mas aqui está uma solução que fará o trabalho muito bem:

  1. Crie um arquivo rewrite_pathinfo.php com o seguinte conteúdo:

    <?php if(!empty($_SERVER['PATH_INFO'])) header("Location: ".$_SERVER['PATH_INFO']); $_SERVER['PATH_INFO'] = $_SERVER['REDIRECT_ORIGINAL_PATH']; ?>

  2. Coloque isso no seu .htaccess :

    php_value auto_prepend_file "/var/www/vhosts/path_to_your/rewrite_pathinfo.php"

    RewriteEngine On

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule (.*) /index.php [QSA,L,PT,E=ORIGINAL_PATH:/$1]

por 05.04.2016 / 04:59

Tags