Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Мини движок, Mod_rewrite
Форумы портала PHP.SU » » Вопросы новичков » Мини движок, Mod_rewrite

Страниц (1): [1]
 

1. vestmar - 12 Августа, 2014 - 14:27:43 - перейти к сообщению
Структура сайта -

[catalog]
+index.php
[papka]
+[files]
++page1.html
++page2.html
++page3.html
+start.php
.htaccess
index.php


Содержимое .htaccess

RewriteEngine on
RewriteRule ^([^/]*)/$ papka/start.php?page=$1 [L]

Содержимое файла start.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_GET['page'])){$page=$_GET['page'];}
  3. if(isset($page) && !empty($page))
  4.         {
  5.                 $dir="files/";
  6.                 $file=file_get_contents($dir.$page.".html");
  7.                 if(!$file)
  8.                         {
  9.                                 die("File not found!");
  10.                         }
  11.                 echo $file;
  12.         }
  13. ?>




Rewrite Mod делает из ссылок

http://localhost[dot]loc/papka/start.php?page=page1
вот такое:
http://localhost[dot]loc/page1/

#Но вот беда, при запросе:

http://localhost[dot]loc/catalog/

выходит File not found!

потому что страницы такой нет, потому что правило такое, я делал вместо die("File not found!");
die(СЕРВЕР_ХОСТ.СЕРВЕР_РЕКВЕСТ_УРЛ); - но получается цикл))

добавляю в .htaccess

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

http://localhost[dot]loc/catalog/ - открывается,
И тогда главный вопрос, мне надо два таких мини движка, возможно ли писать два условия mod_rewrite в .htaccess ?
2. Vinyl - 12 Августа, 2014 - 16:00:36 - перейти к сообщению
Не знаю, как остальные, а я нифигашеньки не понял, что Вам надо. И код Ваш - жесть.

Что Вы имели ввиду под:

Цитата:
потому что страницы такой нет, потому что правило такое, я делал вместо die("File not found!");
die(СЕРВЕР_ХОСТ.СЕРВЕР_РЕКВЕСТ_УРЛ); - но получается цикл))


Код для решения Ваших задач я бы написал так:

PHP:
скопировать код в буфер обмена
  1. <?
  2.   !empty($_GET['page']) ? $page = $_GET['page'] : $page = '';
  3.  
  4.   $dir = 'files/';
  5.  
  6.   if(empty($page))
  7.   {
  8.     $file = file_get_contents($dir.'index.html');
  9.   }
  10.   else
  11.   {
  12.     $file = file_get_contents($dir.$page.".html");
  13.   }
  14.  
  15.   if($file)
  16.   {
  17.     echo $file;
  18.   }
  19.   else
  20.   {
  21.     die('File not found');
  22.   }
  23. ?>


И это очень небезопасный код...
3. vestmar - 12 Августа, 2014 - 17:13:19 - перейти к сообщению
Мне надо что бы, было 2 правила в .htaccess, для двух разных "динамических ссылок", я понимаю что код жесть) пока только такое... я только учусь,
4. Vinyl - 12 Августа, 2014 - 20:18:17 - перейти к сообщению
vestmar, честно, может я сегодня туплю, но Ваше пояснение мне так и не дало понимания, что требуется.

Условий в htaccess хоть миллион напишите.
5. vestmar - 12 Августа, 2014 - 23:50:27 - перейти к сообщению
В .htaccess есть уже правила для преобразования ссылок, а мне надо вписать ещё одно, страницы которые генерируются не CMS и преобразовываются, а через такой скрипт, и что бы не было конфликта с другими правилами mod_rewrite

 

Powered by ExBB FM 1.0 RC1