golang / apache / cgi на debian --- apache перестал работать редирект - PullRequest
0 голосов
/ 12 февраля 2020

после переустановки из-за hd cra sh мои перенаправления перестали работать. Почему? Единственное отличие, которое я вижу, это то, что каталог root изменился с var / www to var / www/html.. Я попытался указать / var / www as root вместе с / var / www / для каталога. Мой по умолчанию conf имеет те же директивы, если я выключаю ssl, я получаю ту же проблему.

Я использую ssl, и мой 000-default-le-ssl.conf содержит

ServerAdmin webmaster@localhost
DocumentRoot   / var/www/html
<Directory  /var/www/html/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.yellowrockonline.com.au [OR]
    RewriteCond %{SERVER_NAME} =yellowrockonline.com.au

 RewriteRule ^(wiki)$ https://www.yellowrockonline.com.au/cgi-bin/mywikicgi 
 RewriteRule ^(view/.*)$ http://localhost:8080/$1 [P,L] 
 RewriteRule ^(edit/.*)$ http://localhost:8080/$1 [P,L] 
 RewriteRule ^(save/.*)$ http://localhost:8080/$1 [P,L]

</Directory>

# Redirect "/view/suggestion" http://localhost:8080/view/suggestion 
# works but returns localhost:8080/ to the browser 
The cgi program starts from a link to www.domainname/cgi-bin/programname and returns domainma,e/view/suggestion to the browser along with the error

Запрошенный URL-адрес не найден на этом сервере. Сервер Apache / 2.4.38 (Debian) на www.yellowrockonline.com.au Порт 443

Ссылка на программу cgi https://www.yellowrockonline.com.au/cgi-bin/mywikicgi

Код go, который доставляет измененный URL

func hello(w http.ResponseWriter, r *http.Request) {
    http.Redirect(w, r, "/view/suggestion", http.StatusFound) 
    // added to do redirect
    fmt.Fprintf(w, "Hello from Go!  Redirecting to suggestions")

}

func main() {
    http.HandleFunc("/view/", makeHandler(viewHandler))
    http.HandleFunc("/edit/", makeHandler(editHandler))
    http.HandleFunc("/save/", makeHandler(saveHandler))

   http.HandleFunc("/", hello)
   cgi.Serve(nil)

    log.Fatal(http.ListenAndServe(":8080", nil))

}

1 Ответ

0 голосов
/ 14 февраля 2020

Попытка выяснить разницу между моей старой и моей новой конфигурацией. Я, наконец, вспомнил, что в первый раз, когда я пытался сделать это, я пытался использовать proxypass, а не переписывать правила.

Как только я включил proxypass, проблема устранилась, и теперь она работает. Хотя почему это так, я понятия не имею, что я не использую проход прокси, и перезапись не должна зависеть от него.

sudo a2enmod proxy && sudo a2enmod proxy_http

Угадайте что! Это исправило проблему и теперь работает! Я снова счастлив!

Я добавил дополнительный редирект, чтобы люди не видели имя запущенной cgi-программы.

...