<IfModule mod_rewrite.so>
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/$1 !-f
RewriteRule ^(.*)$ page.php [L]
</IfModule>
<FilesMatch "^([^\.]+)$">
ForceType application/x-httpd-php
</FilesMatch>
<Ifmodule mod_php5.c>
php_flag register_globals off
php_value auto_prepend_file "E:/sites/mydomain.ru/www/inc/common.php"
</Ifmodule>
пути и адреса к файлам при использовании mod_rewrite
У меня с этим возникли некоторые сложности при работе с mod_rewrite
С прикреплением/include файлов управлеия проблем не возникает
Я использую серверную переменную $_SERVER['DOCUMENT_ROOT']; и прикрепляю файлу с отсчетом пути от корня диска
так выглядит мой .htaccess
Код:
так common.php
Код:
<?
error_reporting(1);
require_once('config.inc');
header("Content-Type: text/html; charset=windows-1251");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
include_once($DocRoot.'/inc/modules/error.php');
include_once($DocRoot.'/inc/modules/help.php');
include_once($DocRoot.'/inc/modules/content.php');
?>
error_reporting(1);
require_once('config.inc');
header("Content-Type: text/html; charset=windows-1251");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
include_once($DocRoot.'/inc/modules/error.php');
include_once($DocRoot.'/inc/modules/help.php');
include_once($DocRoot.'/inc/modules/content.php');
?>
и в фыйле page.php призвожу парсинг ссылки
Код:
<?php
if ($_SERVER['REQUEST_URI'] == '/'){
include($DocRoot."/in_sql/index.php");
$TEMPLATE = "intro";
} else {
$par = preg_split("/\//", $_SERVER['REQUEST_URI']);
if (is_file($DocRoot."/in_sql/".$par[1].".php")){
include($DocRoot."/in_sql/".$par[1].".php");
} else {
header("Location: /");
exit();
}
}
?>
if ($_SERVER['REQUEST_URI'] == '/'){
include($DocRoot."/in_sql/index.php");
$TEMPLATE = "intro";
} else {
$par = preg_split("/\//", $_SERVER['REQUEST_URI']);
if (is_file($DocRoot."/in_sql/".$par[1].".php")){
include($DocRoot."/in_sql/".$par[1].".php");
} else {
header("Location: /");
exit();
}
}
?>
все это сырой материал и сут не в этом
проблема в другом. возмем на пример такую вот ссылочку - http://www.mydomain.ru/news/02/06/2005/.
предполагается что эта url преабразуется например к виду http://www.mydomain.ru/news.php?d=02&m=06&y=2005
но в чем загвоздка в шаблоне прописано[HTML]
<link rel="stylesheet" href="/css/style.css" />[/HTML]
тоесть E:/sites/mydomain.ru/www/news.php
имеет ссылку на стили
E:/sites/mydomain.ru/www/css/style.css
все вродебы верно, но при нашей юрле(http://www.mydomain.ru/news/02/06/2005/) пытается прикрепить стили расположеные по адресу
E:/sites/mydomain.ru/www/news/02/06/css/style.css
естественно никаких таблиц стилей там нет
есть вариант все ссылки преобразовать в абсолютные, тоесть - http://www.mydomain.ru/css/style.css
но есть и какойто другой способ решения этой проблему. ярким примером такового решения является Википедия
я так понимаю что нужно менять сам принцып решения ЧПУ
тоесть обрабатывать URL не через php как у меня, а в файле .htaccess
изменив шаблон в строке
Код:
RewriteRule ^(.*)$ page.php [L]
Код:
<base href="http://www.mydomain.ru/" />
Но лучше все же использовать абсоютные пути. Я так в своем движке делаю.
Цитата: Nixus
Код:
<base href="http://www.mydomain.ru/" />
Но лучше все же использовать абсоютные пути. Я так в своем движке делаю.
вот в том то и вопрос
мне использовать абсолютные ссылки как например на http://www.nnm.ru/
Код:
<link rel="stylesheet" type="text/css" media="all" href="http://www.nnm.ru/css/default/skelet.css" />
или отнасительные как на http://ru.wikipedia.org/wiki/Заглавная_страница
ведь обрати внимание при url http://ru.wikipedia.org/wiki/Заглавная_страница в коде прописано
Код:
<link rel="stylesheet" type="text/css" media="print" href="/skins-1.5/common/commonPrint.css?100" />
а стили расположены по адресу http://ru.wikipedia.org/skins-1.5/common/commonPrint.css (без каталога wiki)
Цитата: dead_star
обрати внимание при url http://ru.wikipedia.org/wiki/Заглавная_страница в коде прописано
а стили расположены по адресу http://ru.wikipedia.org/skins-1.5/common/commonPrint.css (без каталога wiki)
Код:
<link rel="stylesheet" type="text/css" media="print" href="/skins-1.5/common/commonPrint.css?100" />
а стили расположены по адресу http://ru.wikipedia.org/skins-1.5/common/commonPrint.css (без каталога wiki)
Это делает / в начале относительного uri.
Цитата: Nixus
Это делает / в начале относительного uri.
а, точно. не заментил. сорь.
короче
общую идею пенял
вопросов больше не имею
тему можно закрывать