Безответный reg php language alias. Псевдонимы (алиасы) bash для Laravel. Как создать собственные алиасы

  • Перевод

Bash-алиасы («псевдонимы») - это ярлыки к файлам, позволяющие ссылаться на другую команду через более запоминающиеся слова, сокращения или символы. Например, если вы используете Git, вы можете запускать git-статус много раз в течение дня, поэтому, чтобы сэкономить время и количество нажатий клавиш, вы можете присвоить ему алиас, который вызовет правильную команду.

Я видел много необычных псевдонимов за эти годы, и многие из них уникальны для человека. Ярлыки, имеющие смысл для одного, могут совершенно запутать другого. Вот что их делает такими забавными.

Nah="git reset --hard;git clean -df"
Это реально продемонстрировать: представьте что начали работать над новой функцией и, возможно, добавили несколько новых файлов, а после обеда решили, что все сделали неверно. Запустив команду " nah ", вы вернете код к предыдущему состоянию, удалив все внесенные изменения. Это очень удобно и полезно!

Как создать собственные алиасы

Для тех, кто не создает псевдонимы bash, процесс довольно прост. Вначале текстовым редактором откройте файл ~/.bashrc , находящийся в вашем домашнем каталоге. Затем раскомментируйте или добавьте следующие строки:

If [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Команда как бы говорит о необходимости загрузке файла ~/.bash_aliases , если он существует, поэтому вы можете помещать в него все свои алиасы (псевдонимы) и облегчать их совместное использование. Наконец, создайте файл ~/.bash_aliases и добавьте следующее в качестве своего первого псевдонима:

Alias art="php artisan"
Сохраните изменения и выполните в терминале команду:

Source ~/.bashrc
Теперь вы имеете возможность использовать алиас " art ".

Просто помните, что каждый раз после изменения файла ~/.bash_aliases вам необходимо запускать эту команду, либо перезапустить терминал для применения изменений.

Псевдонимы для Laravel от сообщества

Ниже приведен список алиасов, использующихся сообществом Laravel:

WaveHack

# Laravel artisan() { if [ -f bin/artisan ]; then php bin/artisan "$@" else php artisan "$@" fi } alias serve="artisan serve" alias tinker="artisan tinker" # Misc PHP t() { if [ -f vendor/bin/phpunit ]; then vendor/bin/phpunit "$@" else phpunit "$@" fi }

bmadigan

nah="git reset --hard;git clean -df" vm="ssh [email protected] -p 2222"

Tainmar

pa="php artisan"

Mohamed Said

alias dracarys="git reset --hard && git clean -df" alias copyssh="pbcopy < $HOME/.ssh/id_rsa.pub" alias reloadcli="source $HOME/.zshrc" alias zshrc="/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl ~/.zshrc " alias shrug="echo "¯\_(ツ)_/¯" | pbcopy"; alias fight="echo "(ง"̀-"́)ง" | pbcopy"; *** This one opens a PR from the current branch function openpr() { br=`git branch | grep "*"` repo=$1 parentBranch=$2 open -a /Applications/Google\ Chrome.app https://github.com/${repo/* /}/compare/${parentBranch/* /}...themsaid:${br/* /}\?expand\=1 }

Jeffrey Way

alias gl="git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit" alias wip="git add . && git commit -m "wip"" alias nah="git reset --hard && git clean -df" alias p="phpunit" alias pf="phpunit --filter " alias art="php artisan" alias migrate="php artisan migrate"

Bill Mitchell

alias a="php artisan" alias pu="vendor/bin/phpunit" alias puf="vendor/bin/phpunit --filter " alias pug="vendor/bin/phpunit --group " alias cdo="composer dump-autoload -o" alias serve="php artisan serve"

Jesús Amieiro

alias pa="php artisan" alias par:l="php artisan route:list" alias pam="php artisan migrate" alias pam:r="php artisan migrate:refresh" alias pam:rs="php artisan migrate:refresh --seed" alias cu="composer update" alias ci="composer install" alias cda="composer dump-autoload -o" alias vu="cd ~/Homestead && vagrant up" alias vs="vagrant suspend" alias vssh="vagrant ssh"

Piotr

alias artisan = "php artisan" alias db-reset="php artisan migrate:reset && php artisan migrate --seed"

freekmurze

alias a="php artisan"

paulredmond

alias _="sudo" alias art="php artisan" alias tinker="php artisan tinker" alias ll="ls -lh" alias la="ls -lAh" alias c="composer" alias iphp="psysh" # repl alias g="git" alias gs="git status" alias d="docker" alias dc="docker-compose" alias dm="docker-machine" alias k="kubectl" alias publicip="dig +short myip.opendns.com @resolver1.opendns.com" alias chrome="/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome" # Show file and folder permissions as octal # Usage: `octal file.txt` or `octal my/path` alias octal="stat -f "%A %a %N"" # Mac conveniences for Linux alias pbcopy="xclip -selection clipboard" alias pbpaste="xclip -selection clipboard -o" if type "xdg-open" &> /dev/null; then alias open="xdg-open" fi

TJ Miller

nah: aliased to git reset --hard && git clean -fd aa: aliased to php artisan

sebastiaanluca

# Hub (extend git commands) alias git=hub # Directories alias ll="ls -FGlAhp" alias ..="cd ../" alias ...="cd ../../" alias ....="cd ../../../" alias .....="cd ../../../../" alias df="df -h" alias diskusage="df" alias fu="du -ch" alias folderusage="fu" alias tfu="du -sh" alias totalfolderusage="tfu" alias finder="open -a "Finder" ." # Vagrant alias vagrantgo="vagrant up && vagrant ssh" alias vgo="vagrantgo" alias vhalt="vagrant halt" alias vreload="vagrant reload && vgo" # PHP alias c="composer" alias cr="composer require" alias cda="composer dumpautoload" alias co="composer outdated --direct" alias update-global-composer="cd ~/.composer && composer update" alias composer-update-global="update-global-composer" alias a="php artisan" alias pa="php artisan" alias phpa="php artisan" alias art="php artisan" alias arti="php artisan" alias test="vendor/bin/phpunit" alias y="yarn" alias yr="yarn run" # Homestead alias edithomestead="open -a "Visual Studio Code" ~/Homestead/Homestead.yaml" alias homesteadedit="edithomestead" alias dev-homestead="cd ~/Homestead && vgo" alias homestead-update="cd ~/Homestead && vagrant box update && git pull origin master" alias update-homestead="homestead-update" # Various alias editaliases="open -a "Visual Studio Code" ~/.bash_aliases" alias showpublickey="cat ~/.ssh/id_ed25519.pub" alias ip="curl icanhazip.com" alias localip="ifconfig | grep -Eo "inet (addr:)?(*\.){3}*" | grep -Eo "(*\.){3}*" | grep -v "127.0.0.1"" alias copy="rsync -avv --stats --human-readable --itemize-changes --progress --partial" # Functions mkcdir () { mkdir -p -- "$1" && cd -P -- "$1" } function homestead() { (cd ~/Homestead && vagrant $*) }

Alexander Melihov

alias ars="php artisan serve" alias art="php artisan tinker"

jordonbaade

alias l="php artisan"

Deleu

alias unit="php vendor/phpunit/phpunit/phpunit" alias unitreport="php -d xdebug.profiler_enable=On vendor/phpunit/phpunit/phpunit --coverage-html=./public/report" alias laravel-installer="composer create-project --prefer-dist laravel/laravel"

curieuxmurray

alias artisan="php artisan" alias cclear="php artisan cache:clear" # now with 5.5 alias fresh="artisan migrate:fresh --seed"

wilburpowery

alias pf="phpunit --filter" alias artisan="php artisan" alias tinker="php artisan tinker"

waunakeesoccer1

alias mfs="php artisan migrate:fresh --seed"

От переводчика

Сам же я пользуюсь следующими алиасами:

Alias art="php artisan" alias da="composer dumpauto" alias migrate="php artisan migrate"

Алиасы в Windows

В операционной системе Windows псевдонимы задаются при помощи команды doskey . Например:
doskey art=php artisan $*

Но есть одно «НО»: при последующем открытии командной строки Windows она «забудет» их. Исправить эту проблему очень легко.

Для удобства переходим в папку с Вашей учетной записью %USERPROFILE% и создаем в нем файл dos_aliases.bat .

Внутри файла прописываем нужные нам команды, например:

Doskey art=php artisan $*

«Доллар со звездочкой» дают алиасу понимание того, что ему могут быть переданы какие-либо аргументы и/или параметры, например, art -V для вывода версии ядра движка.

Далее, в стартовом меню найдем командную строку (cmd.exe), щелкнем по ней правой кнопкой мыши и создадим ярлык, сохранив его на рабочий стол. Далее по этому ярлыку щелкаем правой кнопкой мыши, выбрав «Свойства» в выпадающем меню (по-английски «Properties» или «Eigenschaften» по-немецки), затем в поле «Цель» («Target» по-английски, или «Ziel» по-немецки в зависимости от используемой локализации ОС), где видим строку %windir%\system32\cmd.exe , дописываем /k %USERPROFILE%\dos_aliases.bat . Таким образом, мы заставляем подгружать наш файл при каждом запуске командной строки, открывая ее по этому ярлыку.

Полностью строка будет выглядеть так:
%windir%\system32\cmd.exe /k %USERPROFILE%\dos_aliases.bat

После этого сохраняемся и запускаем командную строку используя отредактированный нами ярлык. Вуаля!

OpenServer

Для тех, кто использует консоль из состава OpenServer, дела обстоят еще проще: конфигурация консоли хранится в файле %ConEmuBaseDir%\CmdInit.cmd .

Конечно, если ввести в путь, то операционная система будет ругаться. Это потому, что она не знает о существовании этого пути - он используется внутри окружения OpenServer дабы не захламлять систему.

Итак, нужный нам файл мы найдем в папке с установленным OpenServer: \modules\conemu\ConEmu\CmdInit.bat .

Открываем его текстовым редактором и в нижней части файла дописываем нашу команду:

Doskey art=php artisan $*

Сохраняем и запускаем консоль. Profit!

По аналогии можете добавить абсолютно любые команды, которые упростят Вам жизнь сократив время на их ввод.

Windows PowerShell

Запускаем оболочку Windows PowerShell от имени администратора и проверяем права на запуск отдельных скриптов с расширением `ps1`, выполнив команду:

Get-ExecutionPolicy

По-умолчанию установлена политика `Restricted`, запрещающая выполнение любых скриптов. Мы заменим ее на `RemoteSigned`, разрешающую запускать все скрипты за исключением скачанных из сети:

Set-ExecutionPolicy RemoteSigned

New-Item -type file $PROFILE

В данном моменте возможно появление ошибки, так как в папке «Мои документы» не найдена директория "WindowsPowerShell " - создадим ее… да, вручную. После повторим команду.

Переходим в папку `%USERPROFILE%\Documents\WindowsPowerShell` и открываем файл `Microsoft.PowerShell_profile.ps1` текстовым редактором. В него мы и будем вписывать свои команды.

Во-первых, сразу прописал переход в нужный каталог:

Cd "f:\dev\domains\"

А ниже размещены такие алиасы, как:
art = php artisan migrate = php artisan migrate down = php artisan down up = php artisan up cclear = php artisan cache:clear da = composer dumpauto docup = docker-compose up -d nginx mysql redis beanstalkd docdown = docker-compose kill doc = docker-compose exec workspace bash

Для того чтобы в PowerShell задать команду с параметром, нужно использовать функцию, внутри которой и будут принимаемые аргументы передаваться дальше. Таким образом, алиас команды`art` в оболочке PowerShell принимает вид:

Function Call-Art { php artisan $args } New-Alias -Name art -Value Call-Art

И завершу статью полным списком своих алиасов в оболочке Windows PowerShell:

# Set Main Directory cd "f:\dev\domains\" # Artisan Commands. function Call-Art { php artisan $args } New-Alias -Name art -Value Call-Art # Run the database migrations. function Call-Art-Migrate { php artisan migrate } New-Alias -Name migrate -Value Call-Art-Migrate # Put the application into maintenance mode. function Call-Art-Down { php artisan down } New-Alias -Name down -Value Call-Art-Down # Bring the application out of maintenance mode. function Call-Art-Up { php artisan up } New-Alias -Name up -Value Call-Art-Up # Flush the application cache function Call-Art-Cache-Clear { php artisan cache:clear } New-Alias -Name cclear -Value Call-Art-Cache-Clear # Composer Dump-Autoload. function Call-Composer-Dump-Autoload { composer dumpauto } New-Alias -Name da -Value Call-Composer-Dump-Autoload # Start the Docker function Call-Start-Docker { docker-compose up -d nginx mysql redis beanstalkd } New-Alias -Name docup -Value Call-Start-Docker # Kill the Docker function Call-Kill-Docker { docker-compose kill } New-Alias -Name docdown -Value Call-Kill-Docker # Enter the Docker function Call-Enter-Docker { docker-compose exec workspace bash } New-Alias -Name doc -Value Call-Enter-Docker

Отныне при каждом запуске программной оболочки наш файл будет автоматически подгружаться, предоставляя возможность пользоваться любимыми командами.

Для того чтобы создать псевдоним (алиас) пути используется метод Yii::setAlias() :

// псевдоним пути к папке Yii::setAlias("@myalias", "/path/to/myfolder");
// псевдоним пути к папке на основе другого псевдонима Yii::setAlias("@img", "@myalias/path/to/img");
// псевдоним URL Yii::setAlias("@mysite", "http://mysite.com");

Псевдонимы путей в yii2 можно задать в файле конфигураций приложения с помощью свойства aliases , пример:

Return [ // ... "aliases" => [ "@myalias" => "/path/to/myfolder", "@mysite" => "http://mysite.com" ], ];

Как получить псевдоним (алиас) пути в Yii 2

Для того чтобы получить псевдоним пути в yii2 используеться метод Yii::getAlias() :

Echo Yii::getAlias("@myalias"); // вернет: /path/to/myfolder echo Yii::getAlias("@mysite"); // вернет: http://mysite.com echo Yii::getAlias("@myalias/other/folder/index.php"); // вернет: /path/to/myfolder/other/folder/index.php

Дополнительно о псевдонимах путей в Yii 2

Имя псевдонима

Имя псевдонима может содержать /, при этом метод Yii::getAlias() определит какая часть является именем псевдонима, а какая добавочным путем, например:

Yii::setAlias("@test", "/path/to/test"); Yii::setAlias("@test/val", "/path/to/val"); Yii::getAlias("@test/folder/index.php"); // вернет: /path/to/test/folder/index.php Yii::getAlias("@test/val/index.php"); // вернет: /path/to/val/index.php

Если бы в строке 2 небыл определен алиас @test/val , то строка 4 вернула бы /path/to/test/val/index.php

Псевдонимы расширений

При установке расширения с помощью composer, для него автоматически задается псевдоним (путь к корневой директории расширения). Например при установке imperavi redactor (vova07/yii2-imperavi-widget), вам будет доступен псевдоним пути @vova07/imperavi (@vendor/vova07/yii2-imperavi-widget/src)

Псевдонимы (алиасы) путей в Yii 2 basic приложении

Список основных, заранее заданных псевдонимов (алиасов) путей в yii2 basic:

  • @web: Базовый URL приложения
  • @webroot: Webroot приложения

Псевдонимы (алиасы) путей в Yii 2 advanced приложении

Список основных, заранее заданных псевдонимов (алиасов) путей в yii2 advanced:

  • @app: Корневой каталог приложения
  • @vendor: Папка vendor, под @app
  • @runtime: Путь к временным файлам приложения runtime/cache
  • @web: Базовый URL приложения
  • @webroot: Каталог с тестами приложения
  • @tests: Каталог с тестами приложения
  • @common: Псевдоним (алиас) для common (общей) директории под @app
  • @frontend: Псевдоним (алиас) для frontend директории, под @app
  • @backend: Псевдоним (алиас) для backend директории, под @app
  • @console: Псевдоним (алиас) для console директории, под @app

Типичная ситуация: HTTP-клиент запрашивает с сервера контент, который либо не существует на данном сервере, либо располагается по другому URL. Причин такому стечению обстоятельств может быть несколько. Вы, например, могли переместить контент в пределах сервера (а то и вообще за его пределы) или же вам понадобилось реорганизовать логическую структуру адресов вашего проекта. При обычных условиях запрос несуществующего контента приведёт к тому, что сервер сообщит об ошибке, однако в Apache имеется полезный модуль mod_alias , предоставляющий возможность создавать синонимы URL (aliasing — алиасинг ), а также выполнять перенаправление клиентов на другой URL (redirect — редирект ).

Псевдонимы (алиасы) позволяют серверу преобразовывать один URL в другой, таким образом перенаправляя клиентов на нужный контент, при этом без физической операции перенаправления: для клиента подобная операция совершенно прозрачна. Это очень полезная возможность, если, например, вы задумали очеловечить URL-адреса страниц вашего проекта с целью SEO-оптимизации или ещё зачем-то.

При помощи алиасов вы также можете организовать доступ к файлам, находящимся за пределами Document Root сервера, таким образом предоставив прямой доступ к любой части ФС сервера, не прибегая к использованию CGI-сценариев. Используя редирект, вы получаете возможность физически перенаправлять клиентов на нужные URL.

Директива Alias

Директива Alias позволяет незаметно для клиентов связывать запрашиваемые URL с любой частью файловой системы сервера. Например:

Директива в примере выше приведёт к тому, что Apache перед тем, как выполнять поиск контента в файловой системе, в строке запроса заменит /images/ на /ftp/public/images/ . Таким образом запрос URL http://www.example-domain.com/images/example-image.jpg заставит искать Apache файл example-image.jpg в физическом каталоге /ftp/public/images/ вместо каталога DOCUMENT_ROOT/images .

Обратите внимание на то, что завершающий слеш имеет значение. Приведённый выше пример не сработал бы, если б мы опустили завершающий слеш в первом параметре Alias . Также, алиасинг не сработал бы в случае, если бы клиент запросил URL, в котором после /images отсутствовал завершающий слеш.

Директива AliasMatch

Директива AliasMatch работает так же, как и Alias, при этом позволяя использовать регулярные выражения для определения исходных URL:

AliasMatch /images/(.*)$ /ftp/public/images/$1

В этом примере показано, как мы можете легко связать относительную часть запрашиваемого URL с частью физической файловой системы. Переменная $1 связана с первым соответствием, обнаруженным в скобках регулярного выражения, $2 — со вторым, и так далее. Таким образом, в примере выше, запрос URL http://www.example-site.com/some_dir/images/img1.jpg приведёт к получению файла /ftp/public/images/img1.jpg . Используя эту директиву вы можете, например, хранить все изображения в одном дереве каталогов, независимо от относительного положения подстроки /images/ в строке запроса.

Существенной разницей между Alias и AliasMatch является их поведение. Разница заключается в том, что Alias копирует оставшуюся часть строки запроса после вычитания из неё первого параметра директивы, в то время как AliasMatch — нет. То есть:

Alias /images/ /ftp/public/images/

совершенно не эквивалентна

AliasMatch /images/ /ftp/public/images/

поскольку вторая будет транслировать все запросы, содержащие подстроку /images/ к каталогу /ftp/public/images/ , не добавляя при перезаписи имён файлов. Чтобы получить то, что нужно, вам понадобится следующая инструкция:

AliasMatch ^/images/(.*)$ /ftp/public/images/$1

Директива ScriptAlias

Назначение этой директивы такое же, как и Alias , однако при этом Apache считает конечный каталог таким, который хранит исполняемые CGI-сценарии. То есть после трансляции запроса и определения конечного пути запрашиваемого файла, Apache попытается выполнить последний, как CGI-сценарий.

ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/

В приведённом примере запрос http://www.example-site.com/cgi-bin/some_cgi_script приведёт к выполнению сценария, расположенного в файле /usr/local/apache2/cgi-bin/some_cgi_script . Альтернативный вариант такой конфигурации можно можно описать следующим набором инструкций:

Alias /cgi-bin/ /usr/local/apache2/cgi-bin/ SetHandler cgi-script Options +ExecCGI

Директива ScriptAliasMatch

Данная директива аналогична предыдущей, однако умеет работать с регулярными выражениями, как и AliasMatch .

Директива Redirect

mod_alias ко всему прочему позволяет явно сообщать клиентам о том, что запрошенный ими URL является некорректным, сообщая другой URL, по которому можно отыскать требуемый контент. Для управления такими перенаправлениями используется директива Redirect .

Эта директива работает подобно Alias , только вместо того, чтобы выполнять перенаправление внутри сервера, она отправляет команду перенаправления клиенту. Опциональным параметром директивы является тип перенаправления, сообщаемый клиенту кодом HTTP-статуса ответа (об этом чуть ниже).

Redirect permanent /images http://www.another-example-site.com/images

В приведённом примере запрос URL http://www.example-site.com/images/img1.gif приведёт к перенапрвлению на http://www.another-example-site.com/images/img1.gif .

Если запрашиваемый URL содержит query string , то она будет оставлена без изменений, только если это явно не определно последним параметром директивы Redirect .

Например, правило, рассмотренное выше, запрос URL http://www.example-site.com/images?img-name=1.gif перенаправит к http://www.another-example-site.com/images?img-name=1.gif . Однако, если мы перепишем правило следующим образом:

Redirect permanent /images http://www.another-example-site.com/images?q=new-value

то тот же запрос будет перенаправлен на http://www.another-example-site.com/images?q=new-value .

Теперь о типах перенаправления. Для того, чтобы сообщить клиенту о необходимости перенаправления на другой URL, сервер использует HTTP статус-коды . При помощи директивы Redirect можно определить один из четырёх HTTP-кодов перенаправления (в скобках указано символическое имя, которое можно использовать вместо номера кода).

301 (permanent) . Ресурс переехал на новый адрес. Клиенты и прокси-серверы должны обновить информацию в своих кешах (только если HTTP-заголовки Cache-Control и Expires не препятствуют этому) и в будущем всегда использовать новый адрес ресурса.

302 (temp) . Адрес ресурса временно изменён. Клиенты и прокси-серверы НЕ должны обновлять информацию в своём кеше и в будущем всегда проверять предыдущий адрес ресурса, прежде чем выполнять перенаправление (только если HTTP-заголовки Cache-Control и Expires не препятствуют этому).

303 (seeother) . Ресурс был замещён другим ресурсом и клиент должен выполнить перенаправление, используя метод GET, независимо от того, какой метод использовался для запроса оригинального ресурса.

410 (gone) . Ресурс был удалён и более недоступен.

Если статус-аргумент будет опущен, то по умолчанию будет использоваться 302-редирект. На самом деле вы можете использовать любой HTTP-статус, а не только четыре из представленных выше. Помните только, что если вы используете HTTP-статус, не попадающий в диапазон 300-399, последний аргумент директивы должен быть опущен.

Директива RedirectMatch

Эта директива, как уже все догадались, работает подобно предыдущей, но позволяет пользоваться регулярными выражениями при определении условий, предоставляя больше гибкости в настройке поведения редиректа. Ради примера давайте рассмотрим следующее правило:

RedirectMatch (.*)\.gif$ http://www.example-site.com$1.gif

Здесь все запросы адресов, оканчивающихся.gif , будут перенаправлены в корень другого сервера.

Так же, как и предыдущая директва, RedirectMatch принимает опциональный параметр HTTP статус-кода. В примере выше он не указан, и поэтому будет использоваться код 302.

Также, в семействе Redirect* есть ещё две директивы: RedirectPermanent и RedirectTemp , которые семантически эквиваленты выражениям Redirect permanent и Redirect temp соответственно.

Порядок обработки директив

Если вы не хотите получить неожиданного поведения сервера при работе с редиректом и алиасингом, вы должны знать о том, что инструкции редиректа обрабатываются перед инструкциями алиасинга , если они были одновременно обнаружены в одном и том же контексте (например в пределах оного и того же контейнера или ).

Когда сервер получает запрос, подходящий под условие Redirect или RedirectMatch , то инструкции этих директив будут обработаны прежде, чем инструкции директив Alias и AliasMatch . Это означает то, что в подобных ситуациях директивы Alias* никогда не будут срабатывать, поскольку будет выпоняться редирект.

Второй момент, о котором всегда всегда помнить, это то, что директивы Alias* и Redirect* применяются в том порядке, в котором они появляются . По этой причине зачастую более разумно определять более общие правила в последнюю очередь. Например инструкции:

Alias /sub-dir1/sub-dir2 /dir3 Alias /sub-dir1 /dir4

НЕ будут работать так же, как и:

Alias /sub-dir1 /dir4 Alias /sub-dir1/sub-dir2 /dir3

поскольку Alias /sub-dir1 /dir4 будет срабатывать всегда до того, как дойдёт очередь до Alias /sub-dir1/sub-dir2 /dir3 .

Обычно URL path(URL путь) и File path(Путь в файловой системе относительно виртуального сервера) идентичны. Например, www.example.com/images/foo.gif означает(обычно), что файл находится в /home/example/www/images/foo.gif.

Однако, это может быть изменено благодаря тому, что в Apache называется алиасами(ссылками, псевдонимами). То есть алиас позволяет сослаться в другое место, отличное от физического пути. Например, Обращаясь к /images как из прошлого примера, может быть пользователю отдано содержимое каталога /var/www/images.

Алиасы бывают глобальные или привязанные к конкретному виртуальному серверу.

Для создания алиаса проделайте следующие шаги:

1. На главной странице модуля, выберите виртуальный сервер для которого вы хотите создать алиас. Или, если это будет глобальный алиас выберите Default Server(Сервер по умолчанию).

3. Заполните пустую строку в таблице Document directory aliases(Таблица алиасов). В поле From(От) введите URL путь, и реальный путь в поле To(Куда). Если вы редактируете алиасы сервера по умолчанию, то там уже будет несколько стандартных алиасов.

Существующие алиасы могут быть отредактированы, стандартным для Webmin способом - просто измените его в таблице алиасов и нажмите Save(Сохранить). Если вам нужно удалить, то просто очистите оба поля таблицы соответствующего алиаса.

Алиасы могут быть определены с помощью Perl- регулярных выражений. Но в таком случае они должны быть внесены в таблицу Regexp document directory aliases(Regexp таблица алиасов). Смысл тот же, что и у обычной таблицы алиасов, с тем отличием, что в поле From(От) вы можете ввести что-нибудь вроде ^/images/(.*)\.gif$. А в поле To(Куда) что-нибудь вроде /images/$1.jpg. Этот алиас будет перенаправлять пользователя запросившего GIF картинку, на картинку JPG с тем же именем от GIF, что запросил пользователь.

Редиректы в чем-то очень похожи на алиасы, но служат другой цели. Когда пользователь запросил определенный URL, на который настроен редирект, Apache перенаправит клиента на другой URL или даже на другой сервер. Например, вы можете сделать так, чтобы при обращении к www.example.com/webmin/ пользователя перенаправляло на www.webmin.com . Однако в отличие от алиасов, запрос к /webmin/foo.gif не перенаправит пользователя на www.webmin.com/foo.gif , он все также откроет только www.webmin.com .

Редиректы распознаются браузерами благодаря тому, что веб-сервер посылает специальны код - 302 и сообщает URL новый адрес.

Для настройки редиректа проделайте следующие шаги:

1. На главной странице модуля, выберите виртуальный сервер для которого вы хотите создать редирект. Или, если это будет глобальный редирект выберите Default Server(Сервер по умолчанию).

2. На странице настроек виртуального сервера нажмите на иконку Aliases and Redirects(Алиасы и Редиректы).

3. Заполните пустую строку в таблице URL redirects(Таблица редиректов). В поле From(От) введите URL путь, например /webmin, и URL путь куда перенаправить клиента в поле поле To(Куда), например www.webmin.com. Поле Status(Код статуса) необязательный параметр. Он необходим если вы хотите изменить HTTP код статуса, который будет отдаваться веб-сервером вместо кода по умолчанию(302). Вы можете изменить его на 301 или 303, в зависимости от того, что вам нужно.

Чтобы добавить более одного редиректа вам нужно переоткрыть страницу.

Редиректы могут быть определены с помощью Perl- регулярных выражений. Но в таком случае они должны быть внесены в таблицу Regexp URL redirects(Regexp таблица редиректов). Смысл тот же, что и у обычной таблицы редиректов, с тем отличием, что в поле From(От) вы можете ввести что-нибудь вроде ^/webmin/(.*)$. А в поле To(Куда) что-нибудь вроде http://www.webmin.com/$1. Этот редирект будет перенаправлять пользователя запросившего страницу от /webmin на такую же страницу(с тем же именем) на сайте www.webmin.com.

Если Apache скомпилирован с поддержкой прокси модуля, то вы можете использовать его в качестве прокси-сервера. Это позволит вам организовать в сети как бы один большой веб-сайт в котором - целый Интернет. Ваши пользователи будут обращаться к вашему веб-серверу, а он будет перенаправлять запросы во внешний мир. Да, Apache как прокси-сервер не так гибок как Squid, но может вам и не нужна та гибкость.

Это будет в некотором смысле редирект, но без редиректа как такового. Поэтому существуют еще таблицы Map locale to remote URLs(Маппинг локальных URL к удаленным URL) и Map remote Location: headers to local(Обратный маппинг), которые также размещены на странице Aliases and Redirects(Алиасы и Редиректы).

Для настройки URL маппинга проделайте следующие шаги:

1. На главной странице модуля, выберите виртуальный сервер для которого вы хотите создать маппинг. Или, если это будет глобальный маппинг выберите Default Server(Сервер по умолчанию).

2. На странице настроек виртуального сервера нажмите на иконку Aliases and Redirects(Алиасы и Редиректы).

3. Заполните пустую строку в таблице Map locale to remote URLs(Маппинг локальных URL к удаленным URL). Введите URL путь на вашем веб-сервере(например, /webmin) в первое поле и полный URL куда перенаправлять запросы во второе поле(например, http://www.webmin.com).

4. Заполните пустую строку в таблице Map remote Location: headers to local(Обратный маппинг). Введите полный URL путь на удаленном веб-сервере(например, http://www.webmin.com) в первое поле и URL путь на вашем веб-сервере(например, /webmin) куда перенаправлять запросы во второе поле(например, http://www.webmin.com). Обратный маппинг должен быть обязательно настроен. Иначе ответы не будут доходит до клиентов.

При настройках маппинга, помните, что проксирование это не основная функция веб-сервера. Некоторые функции могут работать не так, как вы думаете, как вы привыкли.