Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2016, 16:23   #1
moshkov_aleshka
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 14
По умолчанию Как с помощью apache или nginx (либо другим способом) сделать перенаправление для html сайта

Здравствуйте.
Есть условно 1кк страниц полная статика html
Файлы на сервере располагаются в папках 0 1 2 и так далее условно 10
Страницы доступны по адресу site.ru/0/1.html и так далее

Как с помощью apache или nginx (либо другим способом) сделать чтоб страницы были доступны по пути site.ru/1.html

Все в одну папку переместить не вариант. Спасибо.
moshkov_aleshka вне форума Ответить с цитированием
Старый 27.03.2016, 12:46   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

По какому принципу файлы разделены по директориям 0,1,2,...,N ?
Andkorol вне форума Ответить с цитированием
Старый 27.03.2016, 13:41   #3
moshkov_aleshka
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 14
По умолчанию

В каждой папке 100к файлов с именами в папке 0 - 1.html ... 100000.html в папке 1 - 200000.html .... 299999 и так далее то есть все имена уникальные . И открываются по адресу site.ru/0/5.html Необходимо чтобы они физически остались в папках но открываться начали по адресам site.ru/5.html
moshkov_aleshka вне форума Ответить с цитированием
Старый 27.03.2016, 15:25   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Создаёшь в корне файл .htaccess:
Код:
RewriteEngine On
RewriteRule ^([^/]*)\.html$ /rewrite.php?page=$1 [L]
Создаёшь в корне файл rewrite.php:
PHP код:
<?php
$page 
= (isset($_GET['page'])) ? intval($_GET['page']) : 0// get page num

if($page === 0){
    include 
'./404.html'// include 404 page
}
else{
    
$range = array(
        
=> array(1100000),
        
=> array(200000299999),
        
=> array(300000399999),
        
=> array(400000499999),
        
=> array(500000599999),
        
=> array(600000699999),
        
=> array(700000799999),
        
=> array(800000899999),
        
=> array(900000999999),
        
10 => array(1000000100000000),
    );

    function 
numeric_range($num$range)
    {
        foreach(
$range as $key => $val)
        {
            if((
$val[0] <= $num) && ($num <= $val[1]))
                return 
$key;
        }
        return 
0;
    }

    
$dir numeric_range($page$range); // get directory num
    
$file_path './' $dir '/' $page '.html'// build page file path

    // include current page or 404
    
if(file_exists($file_path))
    {
        include 
$file_path// include current page
    
}
    else{
        include 
'./404.html'// include 404 page
    
}
}
?>
Создаёшь в корне файл 404.html:
Код HTML:
<b>Page not found!(((</b>
Из описания задачи не совсем понятно, где находятся файлы с номерами от 100001 до 199999 ?
Но с этим уже сам разбирайся, по такому же принципу.
Andkorol вне форума Ответить с цитированием
Старый 27.03.2016, 19:00   #5
moshkov_aleshka
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 14
По умолчанию

Большущее спасибо. Пошел ковырять.
moshkov_aleshka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать правильную перелинковку внутри html сайта? Pyatachok HTML и CSS 1 15.12.2012 20:23
Решение другим способом Дмитрий Алексеев Помощь студентам 8 02.02.2011 20:13
Сделать транслитерацию другим способом tema93 Общие вопросы C/C++ 1 01.12.2010 22:12
Как сделать размер сайта резиновый или хотя бы на 1074x768, вот файлы посмотрите?! Bulnaz HTML и CSS 1 01.12.2010 09:27