É possível remover a extensão .php sem usar mod_rewrite?

1

Estou gerenciando um site de comércio eletrônico para um cliente que foi criado usando o JShop no Apache. Por razões de SEO, links são como:

http://www.domain.com/shop/section/3151/1/flowers
http://www.domain.com/shop/product/35465/blueflower

que são mapeados para:

http://www.domain.com/shop/section.php/3151/1/flowers
http://www.domain.com/shop/product.php/35465/blueflower

que fornecem as mesmas páginas:

http://www.domain.com/shop/section.php?xSec=3151&xPage=1
http://www.domain.com/shop/product.php?xSec=35465

De alguma forma isso é conseguido sem mod_rewrite (eu confirmei isso desabilitando o mod_rewrite e comentando todas as regras de reescrita em todos os arquivos conf e .htaccess).

Nota: Os arquivos section.php e product.php existem, mas a seção e o produto não existem, nem existem links simbólicos.

O problema é que no servidor de produção esse comportamento parou de acontecer. No meu servidor de desenvolvimento ainda funciona. Consegui fazer com que o servidor de produção funcionasse corretamente novamente usando o mod_rewrite, já que é a única maneira de saber como fazer isso. No entanto, eu realmente preciso saber o que mudou no servidor de produção, para que eu possa entender corretamente o problema (para evitar outras consequências imprevistas). Eu reiniciei o Apache e desativei todas as alterações que eu estava fazendo no servidor de produção no momento em que as URLs foram quebradas. Eles ainda estão quebrados (sem minhas novas regras de reescrita).

Quais os métodos que não mod_rewrite podem ser usados para remover extensões .php de URLs?

    
por rwired 13.09.2011 / 09:01

3 respostas

5

Negociação de Conteúdo pode fazer isso. Ative MultiViews para a pasta shop :

<Directory "/path/to/shop">
    Options FollowSymLinks +MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Quando o servidor recebe uma solicitação /shop/section/3151/1/flowers ( section não existe), ele procura pela pasta section.* in shop , classificar com base nos tipos de mídia e codificações de conteúdo enviadas pelo navegador e escolha a melhor correspondência.

    
por 13.09.2011 / 12:04
2

Mod_alias , talvez. Algo como:

AliasMatch ^/shop/section/(.*)/(.*)/(.*)$ /shop/section.php?xSec=$1&xPage=$3
AliasMatch ^/shop/product/(.*)/(.*)$ /shop/product.php?xSec=$1
    
por 13.09.2011 / 09:37
0

Ele pode estar usando PATH_INFO - mais detalhes aqui .

    
por 13.09.2011 / 09:18