Jump to content


Livia29

Member Since 19/02/2012
Offline Last Active 15/01/2013, 08:20
-----

Topics I've Started

Rewrite Não Funciona No Servidor Mesmo Com Mod_Rewrite Ativado

26/03/2012, 15:37

Olá

Quero migrar as URLs do meu site para URLs amigáveis. O arquivo .htaccess está pronto e funciona quando testo ele localmente (uso o Xampp). Conversei com o pessoal do servidor e eles dizem que o mod_rewrite está ativo.

Mas quando mando o arquivo para o servidor, o site não entra, dá Internal Server Error.

Mandei o arquivo para ser analisado pelo pessoal do servidor, mas enquanto espero resposta, queria saber se alguém daqui poderia me ajudar.

Esse é meu arquivo .htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([a-z]+)\/?$ index.php?pg=$1 [L]
RewriteRule ^shows\/([0-9]+)\/?$ index.php?pg=shows&ano=$1 [L]
RewriteRule ^shows\/([0-9]+)\/([0-9,a-z]+)\/([a-z]+)\/?$ index.php?pg=shows&ano=$1&$3=$2 [L]
RewriteRule ^news\/([a-z,_-]+)\/?$ index.php?pg=news&titulo=$1 [L]
RewriteRule ^media\/([a-z]+)\/?$ index.php?pg=media&tipo=$1 [L]
RewriteRule ^repert\/([a-z]+)\/?$ index.php?pg=repert&modo=$1 [L]


Alguém vê algo nele que pode não ser aceito pelo servidor, ou sabe de alguma configuração padrão dos servidores que pode estar barrando meu .htaccess?

Já tentei tirar o Options +FollowSymLinks, já tentei colocar "RewriteBase /", já tentei dar CHMOD para 444 (vi em um site alguém falando sobre isso para o .htaccess), já tentei tirar o RewriteEngine On (vi em outro site alguém falando que, se o RewriteEngine do .htaccess do servidor estiver on, se colocá-lo em outro .htacess, pode dar problema)... Não sei mais o que fazer.

Obrigada

Livia

Url Amigável, Mesma Qtde De Variáveis, Mas Diferentes

24/03/2012, 09:30

Olá

Estou tentando fazer um esquema de URL amigável no meu site. Sou leiga nisso...

Meu arquivo .htaccess está assim:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([a-z]+)/?$ index.php?pg=$1

RewriteRule ^([a-z]+)/([0-9]+)/?$ index.php?pg=$1&$ano=$2
RewriteRule ^([a-z]+)/([a-z,_-]+)/?$ index.php?pg=$1&titulo=$2
RewriteRule ^([a-z]+)/([a-z]+)/?$ index.php?pg=$1&tipo=$2
RewriteRule ^([a-z]+)/([a-z]+)/?$ index.php?pg=$1&modo=$2

RewriteRule ^([a-z]+)/([0-9]+)/([0-9]+)/([a-z]+)/?$ index.php?pg=$1&ano=$2&$4=$3 [L]
</IfModule>


O primeiro RewriteRule e o último estão funcionando. O do $ano=$2 e o do $titulo=$2 também funcionam. Os outros dois, não.

Pensei que podia ser por estar igual ali na regra, mas já tentei mudar para algo tipo ^([a-z]+)/([a-z,0-9]+)/?$ em um deles, e continua não funcionando...

Não queria ter que colocar algo tipo arquivo/tipo/texto na url, queria que fosse apenas arquivo/texto.

As urls em query string funcionam normalmente.

Alguém pode me ajudar a corrigir?

Query String, Sub-Categoria Pegar String De Dentro De Php

19/02/2012, 16:12

Antes que alguém leia tudo isso...

CONSEGUI RESOLVER!

Por isso estou editando o post, já que ninguém teve tempo de lê-lo...

Basicamente eu queria um código query string para acessar mais facilmente as seções do meu site. Uma das seções tem uma sub-seção, e eu queria que essa sub-seção pegasse strings que estão dentro de um arquivo PHP.

O problema era que, com o código que eu tinha, a sub-seção só conseguia pegar um arquivo PHP, não strings de um arquivo PHP.

Não sei se consegui me explicar bem mas, como sou iniciante em PHP e tive muito trabalho para pesquisar, configurar e encontrar a solução para o que eu queria, resolvi postá-la aqui caso alguém esteja procurando algo semelhante.

Não sei nem se posso fazer isso, então, moderador, se quiser, pode deletar o tópico ou adicionar RESOLVIDO nele, por favor...

As páginas que fiz para o teste foram:

query.php
index.php
home.php
media.php
shows.php
shows/2010.php
shows/2011.php

Ambas 2010.php e 2011.php estão dentro da pasta "shows" e contêm as strings do tipo "111223" ou "101017" (desculpe-me se o nome daquilo não é "string", ainda não sei bem o nome das coisas...)

Coloquei isso no arquivo query.php:

<?php
@$pg = $_GET['pg'];
@$ano = $_GET['ano'];
@$data = $_REQUEST['data'];
?>

<?php
if ($pg == "" && !$ano) {
$pagina = "home.php";
}
elseif ($pg == "$pg" && !$ano) {
$pagina = "$pg.php";
}
elseif ($pg == "$pg" && $ano == "$ano") {
$pagina = "$pg/$ano.php";
}
elseif ($pg == "$pg" && $ano == "$ano" && $data == "data") {
$pagina = "$pg.php";
}
?>


Isso no arquivo index.php:

<?php include "query.php" ?>
<html>
<head>
<title></title>
</head>
<body>

<table border="0" width="350">
<tr>
<td><a href="?pg=media">media</a><br><br>
<a href="?pg=shows">shows</a><br>
..<a href="?pg=shows&ano=2010">2010</a><br>
....<a href="?pg=shows&ano=2010&data=101017">101017</a><br>
....<a href="?pg=shows&ano=2010&data=100913">100913</a><br>

..<a href="?pg=shows&ano=2011">2011</a><br>
....<a href="?pg=shows&ano=2011&data=111222">111222</a><br>
....<a href="?pg=shows&ano=2011&data=111223">111223</a></td>
<td>
<?php
if( (isset($pagina)) and (file_exists($pagina)) ) {
include($pagina);
} else {
echo "<br><b>Essa p&aacute;gina n&atilde;o existe!<br><a href=\"java script:history.back();\">voltar</a></b>";
}
?>
</td>
</tr>
</table>

</body>
</html>


O código PHP no meio da página index.php é colocado onde vai o conteúdo dinâmico.

Em 2010.php, tenho:

<?php
if ($data == '')
{
?>

Shows 2010<br /><br />

<a href="?pg=shows&ano=2010&data=101017">Show 101017</a><br />
<a href="?pg=shows&ano=2010&data=100913">Show 100913</a>

<?php
}
elseif ($data == '101017')
{
?>

Show 101017

<?php
}
elseif ($data == '100913')
{
?>

Show 100913

<?php
}
?>


E o 2011.php segue a mesma linha.

Escrevi só as respectivas palavras dentro dos arquivos restantes. Em home.php escrevi apenas "home", e assim por diante, só pra testar.

No final, os links ficaram assim:

index.php?pg=media
index.php?pg=shows
index.php?pg=shows&ano=2010
index.php?pg=shows&ano=2011
index.php?pg=shows&ano=2010&data=101017
index.php?pg=shows&ano=2011&data=111222

É isso. Talvez haja uma maneira de fazer isso mais facilmente com PHP... Como meu site não é muito grande e eu nem uso banco de dados, por enquanto isso me satisfaz.

No meu computador e no meu servidor isso funcionou direitinho. Se alguém achar algum erro ou tiver algo a acrescentar sobre o código, seria muito bem-vindo.

Abraços
Livia

IPB Skin By Virteq