2012-05-06 3 views
0

Я относительно новичок в программировании php и работаю над написанием собственного материала MVC. Я бы предпочел сделать это, чем использовать фреймворк b/c. Я пойму это намного лучше :).PHP/mod переписать в разные файлы?

В настоящее время у меня есть настройки сайта следующим образом:

domain.com/services

будет переписать в index.php страницу = услуги

Внутри index.php У меня есть код, загрузит правильный шаблон на основе строки URI. Тем не менее, я хочу сделать мой сайт немного более сложным, чем это ...

Я бы хотел, чтобы сервер загрузил соответствующий файл php на основе строки uri. Каков наилучший способ сделать это? Возможно, index.php действительно прочитал выполнение другого php-файла?

Спасибо!

Edit: Мой текущий Htaccess, который обрабатывает то, что я делаю сейчас:

# Turn on URL rewriting 
RewriteEngine On 

# Installation directory 
#RewriteBase 

# Protect hidden files from being viewed 
<Files .*> 
     Order Deny,Allow 
     Deny From All 
</Files> 

RewriteCond %{HTTP_HOST} ^domain.net$ 
RewriteRule (.*) http://www.domain.net$1 [R=301] 

#remove trailing slash 
RewriteRule ^(.+)/$ /$1 [R=301,L] 

# Protect application and system files from being viewed 
RewriteRule ^(?:templates|configs|templates_c)\b.* index.php/$0 [L] 

# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/URL 
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 

Что я должен изменить для того чтобы достигнуть того, что я хочу? Я думал просто:

RewriteRule ^(.*)$ index.php [L,NS] 

А потом:

list($controller, $function, $params) = explode('/', $uri, 3); 
$params = explode('/', $uri); 

Что бы хорошая методология PHP для выполнения правильного кода в этой точке? просто включите файл?

ответ

0

Лучший способ заключается в использовании .htaccess ModRewrite для изменения URL, так что вы компактная читаемая URL-адрес будет правильно переведен на ваши пути сценария

Моего собственного пути к работе в такой ситуации:

RewriteRule ^/([^/]*)/([^/]*)/?$ engine.php?prmtrs=$1/$2 [L] 

<?php 
list($url_part, $url_page) = explode('/', $_GET['prmtrs']); 
?> 

В курсе вам нужно очистить данные от вас $ _GET для использования, просто упрощенный пример, чтобы показать идею более понятной.

+0

Уже это делает. Добавлен код .htaccess. Любая идея о том, как добавить функциональность, о которой я спрашивал? Ценить это! – user1117873

+0

Я добавил в свой ответ выше подход, который я использую в своем собственном движке. – DaneSoul

0

Вы можете создать несколько правил перезаписи на основе URI. Вот простой пример - вы можете сделать более сложные, используя RewriteCond.

# Rewrite all URIs beginning with 'a' to index1.php 
RewriteRule ^(a[^/\.]+)/?$ index1.php?page=$1 

# Rewrite all URIs beginning with 'b' to index2.php 
RewriteRule ^(b[^/\.]+)/?$ index2.php?page=$1 

Если вы действительно хотите различные файлы для обработки различных типов URI, это, вероятно, путь, если у вас есть несколько десятков таких элементов. В противном случае вы можете выяснить, как отправить изнутри index.php

+0

Как мне отправить диспетчер из index.php? – user1117873

+0

Ну, в этот момент вы просто выяснили, какой класс контроллера должен создать экземпляр и делегировать его туда. – Ansari

+0

Каков наилучший способ делегировать? Включают? – user1117873

Смежные вопросы