Renomeia a extensão de arquivo de ocultação de url

2

Eu quero mostrar o URL de http://some.com/designit/portfolio.php?cat=website&subcat=nature
como http://some.com/designit/portfolio/website/nature.

cat e subcat nos URLs podem estar presentes, mas nem sempre.

Eu coloquei este arquivo .htaccess na pasta designit:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
RewriteRule ^portfolio/?$ portfolio.php[NC,QSA]
RewriteRule ^portfolio/([a-zA-Z0-9_-]+)/?$ portfolio.php?cat=$1[L,NC,QSA]

Agora, ele está mostrando o ..some.com/designit/portfolio.php
como ..some.com/designit/portfolio

mas não está exibindo
..some.com/designit/portfolio.php?cat=website
como ..some.com/designit/portfolio/website

Eu recebo "Erro interno do servidor. O servidor encontrou um erro interno ou uma configuração incorreta e não pôde concluir sua solicitação".

O que preciso fazer para corrigir isso?

    
por Anusri Roychowdhury 14.11.2011 / 09:52

4 respostas

2

Esta é a sua solução:

link

deve dar

link

Você só precisa de uma regra de regravação:

RewriteEngine On
RewriteRule /designit/portfolio/([a-z]+)/([a-z]+)$ /designit/portfolio.php?cat=$1&subcat=$2

Por favor, note que:

  • cat e subcat devem ser apenas caracteres alfa (você pode alterá-lo para atender às suas necessidades)
  • você não precisa testar se é um arquivo ou não, porque "somente caracteres alfa = nenhuma extensão = tem certeza de que não é um arquivo solicitado" (a menos que você compartilhe arquivos sem extensão, mas seria estranho (ao menos))
por 14.11.2011 / 10:10
1

Consulte o URL abaixo: Pode ajudar você.

link

    
por 14.11.2011 / 10:15
1

Coloque sua regra mais específica, a segunda, antes da regra geral e ela deve funcionar.

    
por 14.11.2011 / 09:59
0

Tente abaixo:

RewriteEngine on
RewriteRule ^portfolio/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$   /disignit/portfolio.php?first-var=$1&second-var=$2  [NC]
    
por 14.11.2011 / 10:01