Склейка с помощью php category/index.php и category/

bob

Профессор
Регистрация
30 Авг 2011
Сообщения
155
Реакции
45
Добрый день! помогите пожалуйста: нужен скриптик вставляющийся в шаблон сайта и осуществляющий 301 редирект:
с category/index.php на category/
.htaccess не подходит
 
Вот тебе кусок кода на все случаи жизни:
PHP:
if ( $conf['allow_alt_url'] == 'yes') $url = '/index.html'; 
else $url = '/index.php';

if ($_SERVER["REQUEST_URI"] != $url) {
    header ('HTTP/1.1 301 Moved Permanently');
    header('location: '.$url);
    die('<a href="' . $url . '">Верная ссылка на страницу</a>');
}
 
Мне надо было уточнить: нужен скрипт, так сказать, в общем виде - для интернет магазина.
есть куча категорий, которые заканчиваются на index.php. И каждый час появляются новые.
Т.е. если url xxx/index.php, то должно перекидывать на xxx/ , если yyy/index.php на yyy/
алгоритм примерно такой:
1. проверять наличие в конце index.php
2. если есть, отделять то что до index.php в Для просмотра ссылки Войди или Зарегистрируйся
3. заносить ту часть Для просмотра ссылки Войди или Зарегистрируйся которая до index.php в переменную
4. подставлять в функцию header переменную
к сожалению владею PHP на очень низком уровне, поэтому и прошу помочь
 
Ну так генерируйте верную ссылку в $url и всё...
В моём случае генерация идёт так:
PHP:
if ( $conf['allow_alt_url'] == 'yes') $url = '/index.html'; 
else $url = '/index.php';
Т.е. если ЧПУ включено, код перенаправляет на index.html, иначе - на index.php

Подставляйте свои переменные в $url - всё будет работать.
 
т.к. не понимал что такое $conf['allow_alt_url'] вбил это в гугл - гугл показал темы про DLE. У меня не DLE - у меня битрикс.

на всякий случай вставил в шаблон Ваш код
весь сайт начал ссылается на bamboleo.com.ua/index.php
 
$conf['allow_alt_url'] - это переменная из конфига, отвечающая за ЧПУ. Я уже это пояснил...

Ещё раз, сам код редиректа:
PHP:
if ($_SERVER["REQUEST_URI"] != $url) {
    header ('HTTP/1.1 301 Moved Permanently');
    header('location: '.$url);
    die('<a href="' . $url . '">Верная ссылка на страницу</a>');
}
В качестве парамера он принимает $url, который У МЕНЯ генерируется таким образом, как я описал. Конечно, в Вашем случае генерировать его нужно другим способом...

К примеру, можно порезать index.php:
PHP:
$url = explode('index.php', $_SERVER["REQUEST_URI");
$url = $url[0];
И вставлять этот код нужно в файл, который генерирует категории, а не на весь сайт...
 
  • Нравится
Реакции: bob
скрипт настроил
Код:
<?php
$requri = $_SERVER['REQUEST_URI'];
  if(strstr($requri, 'index.php') !== false )
{
  $url = explode('index.php', $_SERVER['REQUEST_URI']);
$url = $url[0];
if ($_SERVER["REQUEST_URI"] != $url) {
    header ('HTTP/1.1 301 Moved Permanently');
    header('location: '.$url);
    die('<a href="' . $url . '">Верная ссылка на страницу</a>');
}}
?>
- проблема осталась. (ставил на другие сайты - работает)
похоже что дело в nginx(первый раз с ним имею дело).
UPD:
if ( $request_uri ~ "/index.php?" ) {
rewrite ^(.*)/index.php$ $1/ permanent;
}
 
Назад
Сверху