У меня проблема с mod_rewrite и не понятно как ее решать... Вообщем вот мое содержимое файла .htaccess Код (Text): RewriteEngine On RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ modules/news.php?action=$1&id=$2 [L] Новости открываются и так http://site/modules/news.php?action=news&id=158 и так http://site/news/158/ Вроде-бы все работает, но почему - то ссылки не меняются автоматически а всегда работают без mod_rewrite
Ну так сслыки на новости же прописаны в коде, мне их нужно сразу приводить к такому виду? Я думал что они должны автоматом перебиваться и если отключишь модреврайт то будут работать без него...
Угу. А ещё лучше было бы, если б ты думал немного на перёд и написал скрипт, который будет отображать ссылки по заданному паттерну.
Приведу пример из движка компании, в которой я работаю: <a href="<?= GetPageWebPath('', 'actions_bonuses_match'); ?> PHP: <?php function GetPageWebPath($page = '', $ext = '', $userParams = '', $setLang = '') { global $SYS_VARS, $SESS; // $_SERVER, $_GET, if ($page == '') { $page = $SYS_VARS['PAGENAME']; if (($ext == '') && ($userParams === '')) $userParams = $_SERVER['QUERY']['STRING']; if (($ext == '') && ($SYS_VARS['EXTPAGENAME'] != '')) $ext = $SYS_VARS['EXTPAGENAME']; } else { // if (strpos($page, '/') === false && ($SYS_VARS['PAGEGROUP'] != $SYS_VARS['PAGE']['DEFDIR'])) $page = $SYS_VARS['PAGEGROUP'] . $page; $dir = substr($page, 0, strrpos($page, '/')); $page = substr($page, strlen($dir)); if (($dir != '') && is_dir($SYS_VARS['PAGE']['DIR'] . $dir)) { $page = $dir . $page; } else if (is_dir($SYS_VARS['PAGE']['DIR'] . $SYS_VARS['PAGEGROUP'] . $dir)) { $page = $SYS_VARS['PAGEGROUP'] . $dir . $page; } } if (!$userParams) $userParams = ''; if (!$SESS->_COOKIE['NUMBER']) { $userParams = preg_replace('/sess\.id=[^;]+/i', '', $userParams); if (!$userParams) $userParams = 'sess.id=' . $SESS->SYSDATA['NUMBER']; else $userParams = 'sess.id=' . $SESS->SYSDATA['NUMBER'] . '&' . $userParams; } list($dir, $pagename) = explode('/', $page, 2); if ($dir.'/' == $SYS_VARS['PAGE']['DEFDIR']) $page = $pagename; if ($SYS_VARS['URL']['TYPE'] == 'path') { if ($SYS_VARS['PAGE']['LANG']['ENABLED']) { if ($setLang) { if ($SYS_VARS['URL']['USELANG']) $page = $setLang . '/' . $page; else { if ($userParams) $userParams .= '&lang.name=' . $setLang; else $userParams = 'lang.name=' . $setLang; } } else if ($SYS_VARS['URL']['USELANG']) $page = $GLOBALS['LANG']->CURRENT['NAME'] . '/' . $page; } if ($SYS_VARS['URL']['DIRECT']) $path = $SYS_VARS['SITEPATH'] . $page; else $path = $SYS_VARS['SITEPATH'] . 'index.php/' . $page; if (($page != '') && (substr($path, -1)) != '/') $path .= '/'; if (is_array($ext)) $ext = implode('/', $ext); $path .= $ext; if ($SYS_VARS['ACTION']['ENABLED'] && (substr($page, -6) == 'action')) { /* list($pg, $params) = explode('?', $SYS_VARS['CMDLINE'], 2); $newFrom = $SYS_VARS['THISPAGE'] . ($params ? '?'.$params : ''); if ($userParams) $userParams = 'from=' . base64_encode($newFrom) . '&' . $userParams; else $userParams = 'from=' . base64_encode($newFrom); */ if ($_GET['FROM']) $newFrom = $_GET['FROM']; else $newFrom = $SYS_VARS['CMDLINE']; if ($userParams) $userParams = 'from=' . base64_encode($newFrom) . '&' . $userParams; else $userParams = 'from=' . base64_encode($newFrom); } if ($userParams != '') $path .= '?' . $userParams; } else { $userParams = eregi_replace('[?&]page=[^&]+&?', '', $userParams); $userParams = eregi_replace('^page=[^&]+&?', '', $userParams); $userParams = eregi_replace('[?&]lang.name=[^&]+&?', '', $userParams); $userParams = eregi_replace('^lang.name=[^&]+&?', '', $userParams); $userParams = eregi_replace('[?&]ext=[^&]+&?', '', $userParams); $userParams = eregi_replace('^ext=[^&]+&?', '', $userParams); $userParams = eregi_replace('[?&]ext\[[^\]]*\]=[^&]+&?', '', $userParams); $userParams = eregi_replace('^ext\[[^\]]*\]=[^&]+&?', '', $userParams); $params = 'page=' . $page; if (is_array($ext)) { foreach($ext as $k=>$v) $params .= '&ext[' . $k . ']=' . $v; } else if ($ext != '') $params .= '&ext=' . $ext; if ($SYS_VARS['ACTION']['ENABLED'] && (substr($page, -6) == 'action')) { if ($_GET['FROM'] && ($SYS_VARS['ACTIONPAGE'])) $newFrom = $_GET['FROM']; else $newFrom = $SYS_VARS['CMDLINE']; $params .= '&from=' . base64_encode($newFrom); } if ($SYS_VARS['PAGE']['LANG']['ENABLED'] && $setLang) { if ($userParams) $userParams .= '&lang.name=' . $setLang; else $userParams = 'lang.name=' . $setLang; } if ($userParams != '') $params .= '&' . $userParams; if ($SYS_VARS['URL']['TYPE'] == 'encr') $path = $SYS_VARS['SITEPATH'] . 'index.php?data=' . base64_encode($params); else $path = $SYS_VARS['SITEPATH'] . 'index.php?' . $params; } return $path; } ?>