Обсуждение ModRewrite

Печать RSS
3165

А

Чатланин
0
420. eGo Работает на Себя,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L] 

в Входной точке index.php
имеем следующий код
<?php
/* ...  */
$uri = $_SERVER['REQUEST_URI']; // здесь получаем строку вида /guestbook/add/1
/* дальше можно сделать так */
$uri = explode('/', $uri);
/**
 $uri[0] - Модуль
 $uri[1] - действие
 $uri[2..N] - Параметры
**/

?>
Cобственно подключаешь модуль - действие, передаешь параметры
Изменил: Алексей (22.05.2012 / 08:46)
K

Транклюкаторщик
0
423. megabit, в mobile cms залез - примерно понял о чем речь, там через класс роутера это все реализовано, мне пока попроще нужно решение. сейчас твой код помог до конца разобраться )) спасибо огромное, +1
K

Транклюкаторщик
0
мда.. принцип то понял, только вот опять ничего не работает.
вставил твой код в htaccess, для проверки в index.php написал переадресацию на http://site.ru/index - выдает пустую страницу, у меня просто выполняется index.php из корневого каталога.
А

Чатланин
0
425. eGo Работает на Себя, чудно, но видимо чтото ты не так делаеш, только что имеено так и сделал.
точто посмотрел в Mobilecms так это и есть суть роутинга,
когда подключаеш модуль - вызываеш класс по имени модуля, действие - это метод, ну и параметры в него если неоходибмо, либо через глобальный $request
K

Транклюкаторщик
0
426. megabit, я просто только начал изучать mvc, и у меня немножко по другому. у меня не класс для каждого модуля, а файл со swtich-case для каждого действия.
D

Пришелец
0
Здравствуйте. Такая ситуация.
в файле .htaccess я прописал:

RewriteRule ^contacts$ contacts.html [L]

Но мне надо сделать так,чтобы страница открывалась так http://site.ru/contacts/
а при пепеходе http://site.ru/contacts (без слеша) то был редирект стразу на http://site.ru/contacts/

Помогите такое сделать, желательно стразу код для .htaccess

Заранее благодарю.

или

сделать чтобы че бы ты не водил к примеру site.ru/3423424 то оно перекидовало на ite.ru/3423424/ но надо чтобы редирект был не для 3423424 а для всего чтобы не вводил.. к примеру вел я site.ru/test то перекинуло на site.ru/test/ (добавлялся /)
Изменил: Dizerd (22.06.2012 / 13:33)

2000 лет д.н.э.
0
426. eGo Работает на Себя, а так?
http://code.smartoff.net/source/file/classes---rewriter.class.php/
в папке темплейт исполняемые файлы, в корневом индексе
<?
$Router = new rewriter();
$Router->indexVar(false);
$Router->Rewrite();
include($Router->route());
в хитаччесе
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^(.*?)/$ index.php?rewriter=$1 [L,QSA]
</IfModule>

крутой чЕл
0
Зачем <IfModule mod_rewrite.c> ? Раз спрашивают,значит видимо включен реврвйт)))
П

Пацак
0
427. Dizerd, ну, во-первых, если папка существует, а слеш в конце отсутствует, то, в адресе он все равно добавляется (не знаю, честно говоря, почему smile ). А вот и код .htaccess
RewriteEngine on
#переадресация с кодом 301 (moved permanently)
RewriteRule ^contact$ %{SCRIPT_URI}/contact/ [R=301,L]
RewriteRule ^contact/$ contact.html [L]
Изменил: Петр (23.06.2012 / 10:16)
D

Пришелец
0
Im-ieee (23 Июня 2012 / 10:10)
427. Dizerd, ну, во-первых, если папка существует, а слеш в конце отсутствует, то, в адресе он все равно добавляется (не знаю, честно говоря, почему smile ). А вот и код .htaccess
RewriteEngine on
#переадресация с кодом 301 (moved permanently)
RewriteRule ^contact$ %{SCRIPT_URI}/contact/ [R=301,L]
RewriteRule ^contact/$ contact.html [L]

А возможно как то это все в 1 код организовать?
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск