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

Разное

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

 

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

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

тема: Как на CMS создаются разделы и страницы?
 
 автор: Владимир55   (06.09.2013 в 12:02)   письмо автору
 
 

Когда администратор какой-либо CMS создает новый раздел или новую страницу, то в интернете они имеют вид

http://softtime.ru/forum/ 
http://softtime.ru/theme.php 



Но в реале на сервере директории с именем forum и файла с именем theme.php, естественно, нет.

А как на CMS создаются такие разделы и страницы?

Как можно предположить, в .htaccess посредством mod_rewrite производится вызов специального скрипта, который и определяет, какой контент извлечь из базы и выдать посетителю.

Но это только гипотеза, а как на самом деле?

  Ответить  
 
 автор: cheops   (06.09.2013 в 21:34)   письмо автору
 
   для: Владимир55   (06.09.2013 в 12:02)
 

Так и есть, более того, стараются в .htaccess создать одно правило, а сравнение адреса с правилами осуществлять уже в модуле роутинга, например, при помощи регулярных выражений.

  Ответить  
 
 автор: Владимир55   (06.09.2013 в 22:07)   письмо автору
 
   для: cheops   (06.09.2013 в 21:34)
 

Если в файле .htaccess задать правило:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php
</IfModule>
то обращение к любой странице сайта вызовет файл index.php
Верно?

Если верно, то как в файле index.php "ловить" имя страницы, к которой было обращение?

  Ответить  
 
 автор: psychomc   (06.09.2013 в 22:11)   письмо автору
 
   для: Владимир55   (06.09.2013 в 22:07)
 

$_SERVER["REQUEST_URI"], parse_url, explode ... etc

  Ответить  
 
 автор: cheops   (06.09.2013 в 22:18)   письмо автору
 
   для: Владимир55   (06.09.2013 в 22:07)
 

Не к любой. За исключением реально существующего файла !-f и реально существующей папки !-d

>Если верно, то как в файле index.php "ловить" имя страницы, к которой было обращение?
При помощи элементов массива $_SERVER, например, $_SERVER['REQUEST_URI']

  Ответить  
 
 автор: Владимир55   (07.09.2013 в 09:27)   письмо автору
 
   для: cheops   (06.09.2013 в 22:18)
 

Спасибо!

  Ответить  
 
 автор: Владимир55   (30.09.2013 в 17:35)   письмо автору
 
   для: Владимир55   (06.09.2013 в 22:07)
 

А каким образом расширить эту инструкцию для того, чтобы обращение по несуществующему адресу, начинающемуся с директории catalog, приводило к переадресации на файл index.php в этом каталоге?

  Ответить  
 
 автор: cheops   (01.10.2013 в 07:23)   письмо автору
 
   для: Владимир55   (30.09.2013 в 17:35)
 

Обычно второе правило добавляют перед первым, нечто вроде этого
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^catalog/(.*)$ /catalog/index.php [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php
</IfModule>

  Ответить  
 
 автор: Владимир55   (01.10.2013 в 11:02)   письмо автору
 
   для: cheops   (01.10.2013 в 07:23)
 

Спасибо!!

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

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