гиперссылка — PHP не работает для создания ссылок

У меня есть этот сайт www.amse.com.br

По какой-то причине каждая ссылка на сайте не работает, и я знаю, где проблема, но не знаю почему.

Сценарий index.php обрабатывает ложные URL-адреса и выводит информацию на веб-страницу из базы данных:

<?php
require_once("api/connector.class.inc");

$url_cod = (isset($_REQUEST['cod'])) ? $_REQUEST['cod'] : '';
$url_nm_secao = explode('/', $url_cod);

$url_id = Connector::getAllName("tab_url", "id_tabela", "nm_url='" . $url_nm_secao[count($url_nm_secao)-1] . "'");
$url_tabela = Connector::getAllName("tab_url", "nm_tabela", "nm_url='" . $url_nm_secao[count($url_nm_secao)-1] . "'");if($url_tabela == "tab_produto"){
$_REQUEST["codigo"] = $url_id;
include_once "detalhe-produto.php";
}else if($url_tabela == "tab_subcategoria"){
$_REQUEST["subcategoria"] = $url_id;
include_once "lista-produto.php";
}else if($url_tabela == "tab_categoria"){
$_REQUEST["categoria"] = $url_id;
include_once "lista-produto.php";
}else if($url_tabela == "tab_grupo"){
$_REQUEST["grupo"] = $url_id;
include_once "lista-produto.php";
}else if($url_tabela == "tab_conteudo"){
$_REQUEST["codigo"] = $url_id;
include_once "detalhe.php";
}else{

if(isset($url_nm_secao[0]) && $url_nm_secao[0] == '' || $url_nm_secao[0] == 'index.php'){
include_once "home.php";
}elseif($url_nm_secao[0] != ''){
$paginas = array('contato', 'carrinho', 'cadastro', 'pagamento', 'logout', 'salvar-pedido', 'endereco-de-entrega', 'retorno', 'obrigado', 'meus-pedidos', 'salvar-orcamento');

if(isset($url_nm_secao[0]) && in_array($url_nm_secao[0], $paginas)){

include_once $url_nm_secao[0].".php";

}else if($url_nm_secao[0] == "finalizar-compra"){
$_REQUEST["compra"] = 1;
include_once "cadastro.php";
}
else if($url_nm_secao[0] == "busca"){
include_once "lista-produto.php";
}
else if($url_nm_secao[0] == "locacao"){
include_once "lista-locacao.php";
}

}else{
include_once "home.php";
}
} ?>

Например, www.amse.com.br/contato должен поднять эту страницу www.amse.com.br/contato.php

Это должно происходить с каждой ссылкой на сайте, но я получаю 404,

Если вам нужна дополнительная информация,

пожалуйста, оставьте в комментариях!

1

Решение

Ваш веб-сервер (Apache и т. Д.) Может быть не настроен для обработки этого типа чистого URL.

По умолчанию веб-сервер будет искать файл с соответствующим именем под DocumentRoot, однако ваш файл называется contato.phpне contato, Это означает, что Apache потенциально ищет файл с именем contato и не найдя его, таким образом возвращая ответ HTTP 404.

Если вы используете Apache, вам может понадобиться такое правило переписывания

RewriteRule ^/([a-zA-Z0-9]+)([/a-zA-Z0-9]*)?$ /index.php?cod=$1$2&%{QUERY_STRING} [L]

Это займет все после первоначального / в URL и передайте его вашей программе в cod переменная, делая его доступным в $_REQUESt['cod'] выше. С этим я предполагаю, что ваш index.php будет работать так, как ожидалось.

1

Другие решения

Не уверен, что это поможет, но я кое-что почистил для вас, это было то, что я говорил с помощью переключателя

switch($url_tabela){
case "tab_produto":
$_REQUEST["codigo"] = $url_id;
include_once "detalhe-produto.php";
break;
case "tab_subcategoria":
$_REQUEST["subcategoria"] = $url_id;
include_once "lista-produto.php";
break;
case "tab_categoria":
$_REQUEST["categoria"] = $url_id;
include_once "lista-produto.php";
break;
case "tab_grupo":
$_REQUEST["grupo"] = $url_id;
include_once "lista-produto.php";
break;
case "tab_conteudo":
$_REQUEST["codigo"] = $url_id;
include_once "detalhe.php";
break;
default:
if( !isset( $url_nm_secao[0] ) ){
$url_nm_secao[0] = '';
}

switch ( $url_nm_secao[0] ){
case "finalizar-compra":
$_REQUEST["compra"] = 1;
include_once "cadastro.php";
break;
case "busca":
include_once "lista-produto.php";
break;
case "locacao":
include_once "lista-locacao.php";
break;
default:
case 'index.php':
include_once "home.php";
break;
}
break;
}

Как вы можете видеть, это намного легче читать, я не проверял это, но оно должно быть достаточно близко к тому, что у вас есть.

Php документация для Switch Case

http://php.net/manual/en/control-structures.switch.php

0

По вопросам рекламы [email protected]