chroot является операцией, он изменяет очевидный корневой каталог для текущего рабочего процесса, и это - дети.
корень является учетной записью, которая по умолчанию имеет доступ ко всем командам и файлам на Linux (Базирующийся Unix) система.
корневой каталог является самым высоким каталогом в иерархии.
Это назвало перезапись URL. Можно сделать это в Apache с RewriteEngine, или непосредственно в конфигурации Apache, или с .htaccess (нет действительно никакого различия). И можно сделать это на многих других веб-серверах (мне нравится nginx за его производительность и его простоту конфигурации).
То, когда Вы переписываете URL, Вы отводите динамические роли URL (в Вашем примере, независимо от того, что, после / и прежде чем вторым / является одна из динамических частей), к переменной, передало некоторому серверному языку (мог быть PHP, JSP, не имеет значения). Затем на серверном языке, это - постоянный клиент, ПОЛУЧАЮТ параметр, который можно обработать - считывает соответствующие данные с Базы данных, и так далее.
Например, Вы переписываете:
^(.*)/(.*)$ /controller.php?user=$1&page=$2
Затем в PHP, коде:
echo $_GET['user'];
Распечатал бы:
PewDiePie
Это не действительно физические каталоги в системе. Они - динамические имена в пространстве имен URL, которое отображается или на физическом каталоге или интерпретируется как аргумент функции или приложению, которое затем действует на него.
Это обычно - перезапись URL, это упрощает это "волшебство". Смотрите на это учебное руководство от smashingmagazine, если Вы действительно любопытны, названы: Введение В Перезапись URL.
Скажите, что Вы - Википедия. Всем сайтом является, прежде всего, PHP, базирующийся, таким образом, реальные URL - что-то вроде этого:
http://en.wikipedia.org/w/index.php?title=Barack_obama
Но когда Вы на сайте, Вы, вероятно, будете видеть страницу как это:
http://en.wikipedia.org/wiki/Barack_obama
Конфигурация Apache, которая заставляет это произойти:
RewriteEngine On
#Look for the word "wiki" followed by a slash, and then the article title
RewriteRule ^wiki/(.+)$ w/index.php?title=$1 [L]
Это берет URL, что браузер получает доступ к "http://en.wikipedia.org/wiki/Barack_obama" и переписывает его внутренний к веб-серверу (Apache) к этому, "http://en.wikipedia.org/w/index.php?title=Barack_obama".
Я часто думаю об этом как подобном на Звездном пути, где у них был универсальный переводчик. Сервер берет один набор URL на входе (от браузера), и на задней стороне переводит те URL в другие, которые отображаются на реальные приложения и сценарии на сервере или даже других серверах.
RewriteRule
без обратного проксирования также перепишет URL в адресной панели также. Следовательно предложение AliasMatch
таким образом, это ведет себя как примеры, данные OP :)
– Drav Sloan
22.08.2013, 02:49
AliasMatch
и вся остальная часть функций пробежится через их голову.
– slm♦
22.08.2013, 02:53
Просто перенаправить все URL, которые не имеют a /
в них Вы могли достигнуть с простым AliasMatch (от mod_alias):
AliasMatch ^/([^/]+) /path/to/handler.php
Вы могли затем посмотреть на REQUEST_URI
переменная среды в Вашем сценарии для обработки пользователя для отображения.
И затем для дополнительного материала как /about
обработка:
AliasMatch ^/([^/]+)/(about|videos|blah) /path/to/handler.php
или Вы могли заставить это соответствовать всего двум уровням (таким образом, соединяет каналом как /x/y/z
не будет обработан), таким же образом, мы соответствовали подсистеме пользователей выше ([^/]+
один или несколько символов, которые не являются наклонной чертой):
AliasMatch ^/([^/]+)/([^/]+) /path/to/handler.php
И снова используйте REQUEST_URI
разрабатывать, что отобразиться.
Это будет служить странице URL "как есть" (таким образом, URL останется таким же на Вашей адресной панели в Вашем браузере), все же, содержание будет сгенерировано /path/to/handler.php
.
Они были бы двумя отдельными правилами. Вероятно, был бы способ обработать просто a /username
и /username/something
в одном правиле, но затем это, скорее всего, закончило бы тем, что было довольно нечитабельно. Они сделаны этим способом постараться не соответствовать всему после domain.com
.
Если необходимо измениться на путь к аргументам сценарию, то Вы в землю RewriteRule
(от mod_rewrite). Если Вы хотите поддержать URL в адресной панели, необходимо будет сделать обратный запрос прокси:
RewriteEngine On
RewriteRule ^/([^/]+) /path/to/handler.php?user=$1 [LP]
RewriteRule ^/([^/]+)/(about|videos|blah) /path/to/handler.php?user=$1&args=$2 [LP]
Это сохранило бы сценарий, имеющий необходимость обработать REQUEST_URI
, и может вытянуть переменные от $_GET['user']
и $GET['args']
при использовании PHP.
Снова, как AliasMatch
то второе правило могло быть:
RewriteRule ^/([^/]+)/([^/]+) /path/to/handler.php?user=$1&args=$2 [LP]
но отметьте обоими из них, Ваш сценарий должен будет знать, как обработать все, что соответствует двум URL. Это не может быть тем, что Вы хотите для таких URL как:
/errors/404.html
/about/google.html
и так далее.
AliasMatch
не может сделать аргументов сценария, необходимо было бы использовать RewriteRule
от mod_rewrite
вместо этого. AliasMatch может использоваться, и сценарий должен будет обработать REQUEST_URI
переменная среды вместо этого.
– Drav Sloan
22.08.2013, 12:15