Cześć.
Mam takiego .htaccessa:
Options +FollowSymLinks
RewriteEngine on
RewriteRule cache/ - [F]
Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1
# Blokada hotlinking czyli kradzieży obrazków
RewriteCond %{HTTP_REFERER} !^https://(.+\.)?nazwadomeny.pl/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
# Prevent viewing of htaccess file.
<Files .htaccess>
order allow,deny
deny from all
</Files>
RedirectMatch 403 ^.*/apps/(.*).php(.*)$
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl|map)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
Linki w serwisie wyglądają tak:
http://localhost/admin/SystemConfiguration/RemoveFile
http://localhost/admin/SystemConfiguration/AddFile
http://localhost/admin/SystemConfiguration
Chciałbym żeby dodatkowo rozszerzyć to o możliwość dodania kolejnego ukośnika z parametrem:
http://localhost/admin/UserList/User/IDUsera
http://localhost/admin/UserList/User/IDUsera/Category
Lub jeśli się nie da, to chociaż żeby skrypt zaczął "łapać" wartości z $_GET:
http://localhost/admin/UserList/User?id=IDUsera
Chociaż wolałbym to 1 rozwiązanie.
Dispatcher mojej aplikacji wygląda w sposób następujący:
class Dispatcher
{
private $request;
public function dispatch()
{
$this->request = new Request();
Router::parse($this->request->url, $this->request);
$controller = $this->loadController();
call_user_func_array([$controller, $this->request->action], $this->request->params);
}
public function loadController()
{
$config = \Core\Utilities\Registry::register("Core\Utilities\Config");
if (ADMIN_MODE === true) {
$file = $config->backend_controller_path . '' . $this->request->controller . '.php';
$controllerName = 'Backend\Controllers\\' . $this->request->controller . "AdminController";
} else {
$file = $config->frontend_controller_path . '' . $this->request->controller . '.php';
$controllerName = 'Frontend\Controllers\\' . $this->request->controller . "Controller";
}
if (file_exists("../" . $file)) {
require_once("../" . $file);
$controller = new $controllerName();
return $controller;
} else {
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . SERVER_ADDRESS);
exit();
}
}
}
class Request
{
public $url;
public function __construct()
{
$this->url = str_replace("p=", "", $_SERVER['QUERY_STRING']);
}
}
Czy da się wprowadzić taką zmianę bez modyfikacji php (w samym .htaccesie)?
Może to być widoczne jako kolejny parametr czy coś....