RewriteRule. Я глючу или он?

Константинович
На сайте с 13.09.2008
Offline
319
794

Приветствую!

У меня проблема такого рода. Сайт сделал на html+php include.

Так вот, хочу сделать расширение страниц в формате html, а не php. Страницы написаны на php.

Так вот. Пишу в .htaccess следующее:

RewriteEngine on

RewriteRule ^.htaccess$ - [F]

RewriteRule ^(.*).html$ index.php

RewriteRule ^(.*)/$ index.php

Всё работает, но криво. ЗА именно, когда с сайта нажимаешь на ссылку, например, siteg.ru/art.html, то по этой ссылке я перехожу на главную. И такая картина, если я нажимаю на любую ссылку.

Вопрос. Что это? Как этого избежать? Подскажите, пожалуйста, правильное прописание в файле. Буду покорнейше благодарен. :)

P.S. апускаю сайт через Denwer.

Заранее спасибо за посильную помощь!

Нужны финансы? Быстрая скупка (http://dragmettorg.com/skupka_zolota/). Цены на сайте. А потом отыграй из на казино онлайн правила (http://premium-games.ru/)
den78ru
На сайте с 12.04.2006
Offline
396
#1

<?php

ob_start(); // Starting buffering output

?>

<HTML>

<HEAD>

............

</body>

</html>

<?php

$s=ob_get_contents();ob_clean();

$a=str_replace(".php",".html",$s);

echo $a;

?>

.htaccess

RewriteEngine on

Options +FollowSymlinks

RewriteBase /

RewriteRule ^(.*).html$ /$1\.php

den78ru добавил 02.01.2009 в 10:18

Но есть нюанс, переколбашиваются все расширения.... Если, к примеру, поставить ссылку вида http://site.com/rage.php на выходе получим http://site.com/rage.html

Т.е. грубо говоря на сапе продавать ссылки ведущие на стр. .php нельзя, будут в ерроре постоянно.

Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.
Константинович
На сайте с 13.09.2008
Offline
319
#2

den78ru, спасибо Вам большое! Всё работает!

Вопрос более неактуален! den78ru помог с его решением! Спасибо ему большое!

Константинович добавил 02.01.2009 в 10:36

Всё теперь работает,но возникла другая проблема. :(

Файлы, которые инклудятся в странцу находятся в папке inc.

Страница, которая находится в папке art/1.html не открывается в полном объеме.

На денвере показывается следующее:

Warning: include(inc/1.php) [function.include]: failed to open stream: No such file or directory in Z:\home\12ga.ru\www \articles\1.php on line 9


Warning: include() [function.include]: Failed opening 'inc/1.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\12ga.ru\www\articles\1.php on line 9

Тут много уникальных буковок

Warning: include(inc/2.php) [function.include]: failed to open stream: No such file or directory in Z:\home\12ga.ru\www\articles\1.php on line 37

Warning: include() [function.include]: Failed opening 'inc/2.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\12ga.ru\www\articles\1.php on line 37

Сама страница состоит из:

<? 

$title = "ясен пень, что тут есть";
$description = "тем более";
$keywords = "ключевики";
?>

<? //Данный include вводит шапку, горизонтальное меню.
include("inc/1.php"); ?>

Буквы уникальные

<? //Данный include вводит боковое меню, место для саповских ссылок и футер.
include("inc/2.php"); ?>

В чём тут ошибка? Может из-за того, что расширение было изменено и php include перестал работать? Как тут привести в подобающий вид?

Malcolm
На сайте с 02.05.2007
Offline
119
#3
Константинович:
include("inc/1.php");

Файлы в папке inc физически имеют расширение php?

Указывайте полный путь к файлам в include();

include($_SERVER["DOCUMENT_ROOT"] . "/inc/1.php");
Константинович
На сайте с 13.09.2008
Offline
319
#4
Malcolm:
Файлы в папке inc физически имеют расширение php?

Да.

Malcolm:
include($_SERVER["DOCUMENT_ROOT"]*.*"/inc/1.php");*
);*

Не работает. Вижу только один выход. Кидать папку inc в папку art

Malcolm
На сайте с 02.05.2007
Offline
119
#5
Константинович:
Не работает. Вижу только один выход. Кидать папку inc в папку art

Можно, конечно, и кинуть, а можно и разобраться. Какое сообщение об ошибке пишет?

Константинович
На сайте с 13.09.2008
Offline
319
#6
Malcolm:
Какое сообщение об ошибке пишет?

Вот такое денвер выдаёт:

Warning: include(inc/header.php) [function.include]: failed to open stream: No such file or directory in Z:\home\12ga.ru\www\inc\1.php on line 5

Warning: include() [function.include]: Failed opening 'inc/header.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\12ga.ru\www\inc\1.php on line 5

Warning: include(inc/body.php) [function.include]: failed to open stream: No such file or directory in Z:\home\12ga.ru\www\inc\1.php on line 11

Warning: include() [function.include]: Failed opening 'inc/body.php' for inclusion (include_path='.;/usr/local/php5/PEAR') in Z:\home\12ga.ru\www\inc\1.php on line 11
Malcolm
На сайте с 02.05.2007
Offline
119
#7

В файле inc/1.php найдите include("inc/header.php") и include("inc/body.php"). Там тоже полные пути нужны.

PS. И в inc/2.php тоже самое.

den78ru
На сайте с 12.04.2006
Offline
396
#8

1) Пути к папкам должны быть от корня.

2) inc\1.php // Почему расширение файла инклюда не .inc, возможно его пытается сервер, как .html открыть.

<?php
if (file_exists($_SERVER[DOCUMENT_ROOT]."/inc/top.inc")) {include ($_SERVER[DOCUMENT_ROOT]."/inc/top.inc");} else echo ("<br>нет нужного файла /inc/top.inc");
?>

Сделайте так и проблем не будет.

Константинович
На сайте с 13.09.2008
Offline
319
#9
den78ru:
Сделайте так и проблем не будет.

Только что самостоятельно дошел до:

<?php set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] ); ?>

<?php include ( "inc/1.php") ?>

Конечно, не без помощи ru2.php.net/include, но, всё-таки, приятно, что хоть в чем то допер :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий