Пишем каталог, а думаем файл

Статус
В этой теме нельзя размещать новые ответы.

svetkin

Постоялец
Регистрация
12 Мар 2009
Сообщения
99
Реакции
15
Добрый день!!!!!!!!

Забрал на другой хостинг свой сайт от не очень обязательных людей...

Но есть проблема... там все ссылки сделаны так Для просмотра ссылки Войди или Зарегистрируйся, а фактически должно быть так Для просмотра ссылки Войди или Зарегистрируйся, подскажите пожалуйста как заставить сервер думать что на самом деле ему надо искать файл, а не каталог??????
 
нашел в корневом каталоге файл, называется mod_rewrite.php
такого содержания:
PHP:
$URL = strtolower ($_SERVER["REQUEST_URI"]);

$V = explode ("?", $URL);
$Name = substr ($V[0], 1, 999);

if ( $Name[strlen ($Name) - 1] == "/" )
  $Name = substr ($Name, 0, strlen ($Name) - 1);

$ALLOWED = array (
"about",
"ch2",
"catalog",
"prod",
"contacts",
"price",
"offer",
"news",
"archive",
"sitemap",
"search",
"category",
"map",
"msg",
"1",
"gbebi",
"error404",
"nnpag1",
"nnpag2",
"nnpag3",
"nnpag4",
"nnpag5",
"nnpag6",
"nnpag7",
"nnpag8",
"nnpag9",
"gibkie-shlangi",
"vozdushno-teplovye-zavesy",
"zavesy-frico",
"nnpag10",
"getnews");

if ( $Name == "" )
{
  require_once "index.php";
  exit;
}

if ( $Name == "style.css" )
{
  include_once "style.css";
  exit;
}
if ($Name=="gbebi.php")
{
	include_once "gbebi.php";
  exit;
}
if ( ! in_array ($Name, $ALLOWED) )
{
  require_once "error404.php";
  exit;
}

require_once "{$Name}.php";

может это поможет решить проблему!!!!!!!

Неужели придется в ручную переписывать все ссылки????
 
Пытался бороться так:

Код:
RewriteEngine on 
RewriteBase   / 
RewriteRule ^(.*)\.*$  $1.php [R=permanent]

но .php добавляется раз 100...

Получается сл.: Для просмотра ссылки Войди или Зарегистрируйся...
 
Видимо у тебя на старом хостинге у Апача мод_реврайт не был подключен и поэтому это было реализовано програмно. Спроси яндекса или гугль .htaccess и узнаешь много интересного про этот файлик.
Только у тебя в движке нужно смотреть (тот кто програмил движку, если она самописная) настройки ЧПУ (человеко понятные урлы). По идее как у тебя сейчас, должно быть что-то "использовать встроенный мод_реврайт".
Но сначала уточни, новый хостер тебе предоставляет с апачем мод_реврайт.
Самый простой способ:
1) Создаем файл "phpinfo.php"
2) Пишем в него:
<?php
phpinfo();
?>

По идее тебе можно и phpinfo(INFO_MODULES); что бы лишним внимание не отвлекать.
3) Заливаешь его на свой хостинг и в браузере открываешь.
Там будет похожее на это:
apache2handler
.....
Loaded Modules - ... mod_rewrite ....
Тогда смело настраивай .htaccess
 
svetkin, У тебя небольшая ошибка в коде. Должно быть так:
Код:
RewriteEngine on 
RewriteBase   /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$  $1.php [R=301]
Тогда правило будет работать только для несуществующих файлов.
Это поможет, если в движке допустимо вызывать напрямую php файлы страниц.
Судя по приведенному коду скрипта, это не совсем так. Плюс, в этом mod_rewrite.php производится некоторая защита от дурака и от 404 ошибки.

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

Файлы .htaccess забирал со старого хостинга? Бывает, их иногда не видно из ftp-клиента. У тебя видно было скрытые файлы? (те что с точки начинаются)

aDolph, совет полезный, но судя по тому, что .php дописывается много-много раз, mod_rewrite все-таки есть.
 
Дело в том, что они сами переносили, сайт с мускулом на мой хостинг, что перенесли тем и распологаю, могу сказать что папки с картинками и файлами для скачивания они не отдали, но это ладно... я их востановлю а сейчас пытаюсь заставить работать все ссылки...

и благодаря andrnag, заработало!!!!!!!!

Ребята, спасибо большое за отклик!!!!!!
 
Пожалуйста. :) Только этот код немного не безопасен, судя по тому, какие проверки были в mod_rewrite.php. Возможно, стоит явно прописать по правилу на каждое слово из массива $ALLOWED.
 
Пожалуйста. :) Только этот код немного не безопасен, судя по тому, какие проверки были в mod_rewrite.php. Возможно, стоит явно прописать по правилу на каждое слово из массива $ALLOWED.

а может, попробовать использовать mod_rewrite.php????

откуда его можно вызывать???? или опять же в htaccess надо какое-то правило написать???
 
Тут уже не могу помочь — не хватает данных. Что за движок? (Скорее всего самописанный — нужно разбираться, как там все было)
 
В данном случае нужно было самому сделать резервную копию баз и по фтп забрать все папки от старого хостера. Для баз есть Sypex Dumper Lite, а для всего остального файла любой фтп клиент.
To andrnag: Когда я писал свой ответ, в теме было только первых 2 сообщения. Но форум не хотел сохранять мой ответ, по причине того, что у меня было меньше 5 сообщений (и в пм тоже). Открыл еще одну вкладку и дальше по форуму лазил, пока не заработал 5 сообщение. После отправки своего увидел 3 сообщение. Но на работе не всегда есть время зависать на форумах. Ответ ушел и я свалил работать.
To svetkin: andrnag верно говорит, нужно смотреть что за движка. На мой взгляд лучше былобы подправить и обойтить только .htaccess, но это моё IMHO.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху