Konfiguracja .htaccess

0

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ś....

1

Nie jest to odpowiedź na Twoje pytanie, ale czy nie lepiej byłoby zainteresować się jakąś biblioteką do routingu z jakiegoś popularnego frameworka? Teraz masz apache'a, przejdziesz na nginxa i też będziesz musiał kombinować. Twój problem da się ogarnąć w phpie i to bardzo dobrze.

Obadaj to - https://symfony.com/doc/current/components/routing.html

0
axelbest napisał(a):

Nie jest to odpowiedź na Twoje pytanie, ale czy nie lepiej byłoby zainteresować się jakąś biblioteką do routingu z jakiegoś popularnego frameworka? Teraz masz apache'a, przejdziesz na nginxa i też będziesz musiał kombinować. Twój problem da się ogarnąć w phpie i to bardzo dobrze.

Obadaj to - https://symfony.com/doc/current/components/routing.html

Tzn mam działającą aplikację, do której mam dorobić jakiś drobiazg - dlatego nie chce za bardzo zmieniać php, żeby nic się nie sypneło

Samego .htaccessa nie da się poprawić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1