0
我知道這應該很簡單,但我很難爲前端控制器編寫.htaccess規則。.htaccess前端控制器mod重寫故障
的/主題/文件夾包含所有我的CSS/JS /圖像等,所以我不希望他們傳遞雖然我的控制器
.htaccess文件在/ myadminarea /文件夾的根。
該網站的根目錄(下面的「/」沒有.htacess文件「/ myadminarea」)
前端控制器我看URL裏面,然後直接包括文件 - 但我想成爲與我接受的URL ..
如果url是一個特定的文件,我希望它傳遞雖然前端控制器
如果URL是一個目錄相當寬容(尾隨正斜槓)我不想承擔他們正在尋找該文件夾中的index.php
下面的規則適用於這樣的
mydomain.com/myadminarea/mysection/action/
(loads mydomain.com/myadminarea/mysection/action/index.php via the front controller)
網址,但在網址跌倒在這樣的 -
mydomain.com/myadminarea/mysection/action/index.php
包含一個文件名
(它不使用前端控制器只是加載文件直接) - 我知道!-f排除了文件的重寫規則,但是我已經嘗試了所有我能想到的組合,下面的內容至少適用於沒有文件名的url。當我嘗試路由每一個請求(除了那些在主題文件夾),我得到了一個服務器配置錯誤(500)
這是我的原則
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^(themes)/ /myadminarea/index.php [NC,L]
編輯:
新增簡明前端控制器
// what page is actually being requested?
$uri = explode("/", $_SERVER["REQUEST_URI"]);
//lose the first element and add index.php the last one if it is blank
array_shift($uri);
if (end($uri) == ''){
array_pop($uri);
$uri[] = 'index.php';
}
$page_requested = implode('/', $uri);
if ($page_requested == 'myadminarea/index.php'){
$page_requested = false;
}
includePage($page_requested);
function includePage($page_requested){
if ($page_requested && file_exists(BASE_FILE_PATH . $page_requested) && is_file(BASE_FILE_PATH . $page_requested)){
include(BASE_FILE_PATH . $page_requested);
} else {
echo $page_requested;
}
}
對於記錄時,()圍繞主題是不必要的。 – 2011-04-18 15:35:04
你的前端控制器是如何工作的?它的文件名是什麼? – 2011-04-18 15:36:19
@ M'vy我已經添加了我的前端控制器 – calumbrodie 2011-04-18 15:45:41