Jump to content
RuiGomes

.htaccess - Dois rewrite rules

Recommended Posts

RuiGomes

Olá,

Estou a desenvolver um website, onde tenho todos os ficheiros com a extensão .php e omito a extensão através deste .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]

Ou seja, quando acedo a site.com/login ele na realidade vai a site.com/login.php, e faz isso a todas as páginas.

No entanto, agora queria por algo do género site.com/username a ser site.com/users.php?id=username.

Consigo fazer isso com isto:

RewriteRule ^([a-zA-Z0-9_-]+)$ users.php?id=$1

O problema é que não consigo usar as duas coisas ao mesmo tempo.

Não estou a ver como dar a volta a isto  :wallbash:

Alguém me dá uma ajuda?

Share this post


Link to post
Share on other sites
RuiGomes

Consegui resolver o problema.

Usei um .htaccess assim:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ pagina.php?p=$1 [L,QSA]

Se não houver nenhuma pasta ou ficheiro com o nome introduzido, então site.com/xxx acede a site.com/pagina.php?p=xxx.

O código da pagina.php é:

<?php
require_once 'include/config.php';
require_once 'include/functions.php';

$filename = $_GET['p'] . '.php';
$username = $_GET['p'];

if (file_exists($filename)) {
    include($filename);
} elseif (userExist($username)) {
    $query = "SELECT * FROM users WHERE username='$username'";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
echo $row['id']. " - ". $row['username']. " - ". $row['idade']. " - ". $row['email'];
} else {
include('404.php');
}
?>

userExist() é uma pequena função que verifica se o utilizador existe e se existir faz um query e echo de parametros que usei como teste.

Share this post


Link to post
Share on other sites
RuiGomes

Há alternativas melhores (e.g. mais abrangentes), ainda assim :D

Mas se serve essa, não há sentido para já em mudar, imo.

Se não há nenhum "risco" em usar desta forma, então para já serve perfeitamente, obrigado pela ajuda.

Agora estou com um problema com funções e uploads, mas já postei a minha dúvida na categoria do PHP.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.