Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как присвоить страницам сайта вымышленные имена?
 
 автор: Владимир55   (04.11.2008 в 15:37)   письмо автору
 
 

Предположим, что файлы страниц имеют такие имена:
1.htm
2.htm
3.htm

Эти имена меня вполне устраивают, но хочется чтобы посетители их видели другими. Например так:
vova.htm
start.htm
stop.htm

То есть, чтобы посетитель набрал в адресной строке www.site.ru/vova.htm и получил содержимое страницы www.site.ru/1.htm

Возможно такое?

И куда при этом должны вести внутренние ссылки - на реальные имена файлов или на вымышленные?

============
Надеюсь, что при этом скрипты, определяющие имя файла из урла, по-прежнему будут видеть 1.htm ?

  Ответить  
 
 автор: BinLaden   (04.11.2008 в 16:17)   письмо автору
 
   для: Владимир55   (04.11.2008 в 15:37)
 

> Возможно такое?

Да

> И куда при этом должны вести внутренние ссылки - на реальные имена файлов или на вымышленные?

А что такое "внутренние ссылки"? А тем, что Вы не хотите видеть различий между файлом (например, file://C:/folder/doc.htm) и обычным интернет-документом (http://example.com/doc.htm), Вы сами себя запутываете. По моему скромному, конечно.

  Ответить  
 
 автор: Владимир55   (04.11.2008 в 16:30)   письмо автору
 
   для: BinLaden   (04.11.2008 в 16:17)
 

Вымышленные имена усложняют дело - согласен. Но это не баловство, тут есть достаточно серьёзная цель.

Так как это осуществить?

  Ответить  
 
 автор: Гость   (04.11.2008 в 16:43)   письмо автору
 
   для: Владимир55   (04.11.2008 в 16:30)
 

Апатч -> mRewrite

  Ответить  
 
 автор: ddhvvn   (04.11.2008 в 16:45)   письмо автору
 
   для: Владимир55   (04.11.2008 в 16:30)
 

В раздел Апач - mod_rewrite или ЧПУ.

Простой пример
RewriteEngine On
RewriteBase /
RewriteRule ^portfolio/([a-z_]+)/?$ portfolio.php?sect=$1


protfolio.php - существующий скрипт

  Ответить  
 
 автор: DEM   (04.11.2008 в 17:28)   письмо автору
 
   для: Владимир55   (04.11.2008 в 15:37)
 

Следовательно вам нужно:

RewriteEngine On 
RewriteBase / 
RewriteRule ^1.html$ vova.htm
RewriteRule ^2.html$ start.htm
RewriteRule ^3.html$ stop.htm


Хотя, если у вас таких страниц много, то это не выход... слишком долго вбивать в файл...

  Ответить  
 
 автор: Владимир55   (04.11.2008 в 17:37)   письмо автору
 
   для: DEM   (04.11.2008 в 17:28)
 

Страниц 2000, но я их впишу, скриптом. Только не понял, куда вписывать - в .htaccess ? Или куда?

  Ответить  
 
 автор: lorenberg   (04.11.2008 в 17:58)   письмо автору
 
   для: Владимир55   (04.11.2008 в 17:37)
 

Если использовать БД, то можно там в ячейке с VOVA рядом хранить 1.
При загрузке страницы vova.htm считывать название файла, находить его значение в бд (в нашем случае - 1) и загружать каким угодно методом внутри старницу 1.htm

  Ответить  
 
 автор: ddhvvn   (04.11.2008 в 17:38)   письмо автору
 
   для: Владимир55   (04.11.2008 в 15:37)
 

Блин, я че т если честно не вникнул в тему, а ответил по названию )))
Вам редирект нужен!

  Ответить  
 
 автор: Владимир55   (04.11.2008 в 19:06)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 17:38)
 

Я полагаю, что DEM написал что-то подходящее, только не раскрыл до конца свою идею...

  Ответить  
 
 автор: BinLaden   (04.11.2008 в 19:20)   письмо автору
 
   для: Владимир55   (04.11.2008 в 19:06)
 

2 DEM, а что такое RewriteBase, для чего применяете?

.htaccess
RewriteEngine On  
RewriteRule ^([a-zA-Z0-9...]+)\.html$ page.php?name=$1


page.php
<?php
$name 
= isset( $_GET['name'] ) ? (string) $_GET['name'] : '';

# Зная имя нужно получить ... номер страницы
# Можно доставать из БД, например, как уже посоветовали

$number 1;

# Вывод страницы

readfile$number '.html' );

?>

  Ответить  
 
 автор: ddhvvn   (04.11.2008 в 19:49)   письмо автору
 
   для: BinLaden   (04.11.2008 в 19:20)
 

зачем человеку реврайт, если ему нужен редирект? хотя...

>а что такое RewriteBase
адрес, от которого будут "отталкиваться" правила.
т.е.
RewriteBase /
RewriteRule page/([0-9]+)/? page.php?id=$1  //означает /page/([0-9]+)/? ...
RewriteBase /page/ 
RewriteRule page/([0-9]+)/? page.php?id=$1  //означает /page/page/([0-9]+)/? ...

  Ответить  
 
 автор: BinLaden   (04.11.2008 в 20:54)   письмо автору
 
   для: ddhvvn   (04.11.2008 в 19:49)
 

> зачем человеку реврайт, если ему нужен редирект?

Это он сам Вам сказал? Вот лично я из слов:

> Эти имена меня вполне устраивают, но хочется чтобы посетители их видели другими

... понял другое.

  Ответить  
 
 автор: Владимир55   (04.11.2008 в 21:04)   письмо автору
 
   для: BinLaden   (04.11.2008 в 20:54)
 

Редирект крайне нежелательно. Точнее, неприемлемо, поскольку могут быть проблемы с поисковиками.

А почему так не работает:

.htaccess

RemoveHandler .html .htm 
AddType application/x-httpd-php .php .htm .html 

RewriteEngine On   
RewriteBase /   
RewriteRule ^1.html$ vova.htm  
RewriteRule ^2.html$ start.htm  
RewriteRule ^3.html$ stop.htm 

  Ответить  
 
 автор: BinLaden   (04.11.2008 в 21:07)   письмо автору
 
   для: Владимир55   (04.11.2008 в 21:04)
 

Тогда нужно писать наоборот:

RewriteRule ^vova\.htm$  1.html
# и т.д.


P.S. Легких путей не ищете? :)

  Ответить  
 
 автор: Владимир55   (04.11.2008 в 21:15)   письмо автору
 
   для: BinLaden   (04.11.2008 в 21:07)
 

"P.S. Легких путей не ищете?"

В каком смысле?

  Ответить  
 
 автор: Trianon   (04.11.2008 в 21:08)   письмо автору
 
   для: Владимир55   (04.11.2008 в 21:04)
 

Этот файл решает обратную задачу.

  Ответить  
 
 автор: Владимир55   (04.11.2008 в 21:14)   письмо автору
 
   для: Trianon   (04.11.2008 в 21:08)
 

И так не работает:

RemoveHandler .html .htm 
AddType application/x-httpd-php .php .htm .html 

RewriteEngine On   
RewriteRule ^vova.htm$  1.htm   

  Ответить  
 
 автор: lorenberg   (05.11.2008 в 01:11)   письмо автору
 
   для: Владимир55   (04.11.2008 в 21:14)
 

В даваемом Вам коде был слэш перед точкой.. мож он нужен?)

  Ответить  
 
 автор: Владимир55   (05.11.2008 в 01:25)   письмо автору
 
   для: lorenberg   (05.11.2008 в 01:11)
 

Я прежде попробовал со слешем и с точкой. Не работает. Тогда предположил, что это помарка и сделал без них.

  Ответить  
 
 автор: lorenberg   (05.11.2008 в 04:16)   письмо автору
 
   для: Владимир55   (05.11.2008 в 01:25)
 

А у Вас модреврайт работает вообще? Вдруг библиотека отключена просто...

  Ответить  
 
 автор: Владимир55   (05.11.2008 в 11:37)   письмо автору
 
   для: lorenberg   (05.11.2008 в 04:16)
 

Да, работает.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования