Можно ли создать правило перезаписи / перенаправления .htaccess, которое работает как символическая ссылка? - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу опубликовать eclipse-updatesite в разных версиях. Все версии будут скопированы на сервер, доступ к которому я могу получить только через ftp.

Я хочу, чтобы структура папок была следующей:

myhost.de/storr/releases/0.0.1/       (/kunden/homepages/xx/dxxxx/htdocs/software/storr/releases/0.0.1/)
myhost.de/storr/releases/0.0.2/       (/kunden/homepages/xx/dxxxx/htdocs/software/storr/releases/0.0.2/)
myhost.de/storr/releases/0.0.3/       (/kunden/homepages/xx/dxxxx/htdocs/software/storr/releases/0.0.3/)
myhost.de/storr/latest/               (/kunden/homepages/xx/dxxxx/htdocs/software/storr/latest/)

Если кто-то использует myhost.de/software/latest/, он должен получить все файлы из последней выпущенной версии.

Я пытался создать символическую ссылку и скопировать ее на сервер, но она не сработала. У меня нет доступа по SSH.

Можно ли создать файл .htaccess, который действует как символическая ссылка?

Заранее спасибо

1 Ответ

0 голосов
/ 05 апреля 2019

Директива Apache Alias очень похожа на символическую ссылку, пожалуйста, проверьте документацию: https://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias

Alias /storr/latest /storr/releases/0.0.3

Другой вариант - действительно правило переписывания:

RewriteEngine on
RewriteRule ^/?storr/latest /storr/releases/0.0.3 [END]

В случае, если вы получаете внутреннюю ошибку сервера (статус http 500), используя приведенное выше правило, есть вероятность, что вы используете очень старую версию http-сервера apache. В этом случае вы увидите определенный намек на неподдерживаемый флаг [END] в файле журнала ошибок http-серверов. Вы можете попытаться обновить или использовать более старый флаг [L], он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.

Оба правила будут работать аналогично в конфигурации хоста http-серверов или внутри файла динамической конфигурации (файл ".htaccess"). Очевидно, что модули должны быть загружены внутри http-сервера и включены на хосте http (mod_alias или mod_rewrite). Если вы используете динамический файл конфигурации, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и находилась в папке DOCUMENT_ROOT хоста.

И общее замечание: вы всегда должны размещать такие правила в конфигурации хоста http-серверов, а не использовать файлы динамической конфигурации (".htaccess"). Эти динамические конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера. Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

...