diff --git a/exam/.htaccess b/exam/.htaccess
new file mode 100644
index 0000000..b9e2c1b
--- /dev/null
+++ b/exam/.htaccess
@@ -0,0 +1,37 @@
+RewriteEngine On
+
+##
+## You may need to uncomment the following line for some hosting environments,
+## if you have installed to a subdirectory, enter the name here also.
+##
+RewriteBase /phpCourse/exam
+
+##
+## Black listed folders
+##
+RewriteRule ^app/.* index.php [L,NC]
+RewriteRule ^config/.* index.php [L,NC]
+RewriteRule ^vendor/.* index.php [L,NC]
+RewriteRule ^routes/.* index.php [L,NC]
+RewriteRule ^pages/.* index.php [L,NC]
+
+##
+## White listed folders
+##
+RewriteCond %{REQUEST_FILENAME} -f
+RewriteCond %{REQUEST_FILENAME} !/api/docs/.*
+RewriteCond %{REQUEST_FILENAME} !/assets/.*
+RewriteRule !^index.php index.php [L,NC]
+
+##
+## Block all PHP files, except index
+##
+RewriteCond %{REQUEST_FILENAME} -f
+RewriteCond %{REQUEST_FILENAME} \.php$
+RewriteRule !^index.php index.php [L,NC]
+
+##
+## Standard routes
+##
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^ index.php [L]
\ No newline at end of file
diff --git a/exam/api/.htaccess b/exam/api/.htaccess
new file mode 100644
index 0000000..583de22
--- /dev/null
+++ b/exam/api/.htaccess
@@ -0,0 +1,5 @@
+Order deny,allow
+Deny From All
+
+ Allow From All
+
\ No newline at end of file
diff --git a/exam/api/docs/.htaccess b/exam/api/docs/.htaccess
new file mode 100644
index 0000000..8c9f73c
--- /dev/null
+++ b/exam/api/docs/.htaccess
@@ -0,0 +1,2 @@
+Order deny,allow
+Allow from All
\ No newline at end of file
diff --git a/exam/api/docs/index.html b/exam/api/docs/index.html
new file mode 100644
index 0000000..2fbdaa8
--- /dev/null
+++ b/exam/api/docs/index.html
@@ -0,0 +1 @@
+DOCUMENTATION
diff --git a/exam/api/index.php b/exam/api/index.php
new file mode 100644
index 0000000..e495dfe
--- /dev/null
+++ b/exam/api/index.php
@@ -0,0 +1,4 @@
+ "phpCourse/exam/",
+];
diff --git a/exam/index.php b/exam/index.php
new file mode 100644
index 0000000..4abe957
--- /dev/null
+++ b/exam/index.php
@@ -0,0 +1,3 @@
+
+
+
+
+
+
+
+ Page not Found
+
+
+
+
+
+
+
+
404 Page not Found
+
Page does not exist.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/exam/pages/500.php b/exam/pages/500.php
new file mode 100644
index 0000000..a43b617
--- /dev/null
+++ b/exam/pages/500.php
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+ Server Error
+
+
+
+
+
+
+
+
500 Internal Server Error
+
= $e->getMessage() ?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/exam/pages/index.html b/exam/pages/index.html
new file mode 100644
index 0000000..ac9a82d
--- /dev/null
+++ b/exam/pages/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+ Vite + React + TS
+
+
+
+
+
+
+
diff --git a/exam/routes/.htaccess b/exam/routes/.htaccess
new file mode 100644
index 0000000..872a3ce
--- /dev/null
+++ b/exam/routes/.htaccess
@@ -0,0 +1,3 @@
+Order deny,allow
+Deny from all
+Allow from 127.0.0.1
\ No newline at end of file
diff --git a/exam/routes/routes.php b/exam/routes/routes.php
new file mode 100644
index 0000000..8408996
--- /dev/null
+++ b/exam/routes/routes.php
@@ -0,0 +1,13 @@
+app = require_once __DIR__ . "/../../config/app.php";
+ }
+
+ protected function __clone()
+ {
+ }
+
+ public function __wakeup()
+ {
+ throw new \Exception("Cannot unserialize a singleton.");
+ }
+
+ private static function getInstance(): Config
+ {
+ $cls = static::class;
+ if (!isset(self::$instances[$cls])) {
+ self::$instances[$cls] = new static();
+ }
+
+ return self::$instances[$cls];
+ }
+
+ public static function getBasePath()
+ {
+ return Config::getInstance()->app["basePath"];
+ }
+}
diff --git a/exam/vendor/headers/headers.php b/exam/vendor/headers/headers.php
new file mode 100644
index 0000000..cd8147c
--- /dev/null
+++ b/exam/vendor/headers/headers.php
@@ -0,0 +1,22 @@
+