Bir müşteri benden web sunucusuna bir tls sertifikası kurmamı ve http- & gt; https yönlendirmesini yapmamı istedi. Sertifikayı kurduktan ve yeniden yazma kurallarını aşağıdaki gibi ayarladıktan sonra her şey yolunda görünüyordu:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\. [NC] [OR]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]
############################################
## rewrite API2 calls to api.php (by now it is REST only)
RewriteRule ^api/rest api.php?type=rest [QSA,L]
############################################
## workaround for HTTP authorization
## in CGI environment
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
############################################
## TRACE and TRACK HTTP methods disabled to prevent XSS attacks
RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
RewriteRule .* - [L,R=405]
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
############################################
# X-Content-Type-Options: nosniff disable content-type sniffing on some browsers.
Header set X-Content-Type-Options: nosniff
############################################
# This header forces to enables the Cross-site scripting (XSS) filter in browsers (if disabled)
BrowserMatch \bMSIE\s8 ie8
Header set X-XSS-Protection: "1; mode=block" env=!ie8
</IfModule>
</IfModule>
############################################
## always send 404 on missing files in these folders
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
############################################
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
############################################
## rewrite everything else to index.php
RewriteRule .* index.php [L]
ANCAK: http://tr; https yönlendirmesinin kurulumundan önce webmin paneliyle bu şekilde görünen bir cron işi var:
wget -O /dev/null http://example.com/some_api
Maalesef müşteri API hakkında fazla bir şey bilmiyor ve belgeyi okuyamıyorum, çünkü yazıldığı dilden hiçbir emrim yok.
Öğrendiğim şey, yukarıdaki çağrının (magento) mağaza ile sistemde kurulu mongo db arasında bir senkronizasyon işlemini (ürün verileri) tetiklemesiydi.
Aşağıdaki çağrıyı aşağıdaki yeni komut satırını kullanarak http- & gt; https yönlendirmesine uyarlamaya çalıştım:
wget -O /dev/null --ca-directory /home/user https://www.example.com/some_api
fakat şimdi senkronizasyon artık işe yaramıyor (istek yaşları için askıya alındığı için "www" yi başlangıçta kullanılan ana bilgisayar adına hazırlamak zorunda kaldım).
Webmin içinden manuel olarak başlatıldığında aşağıdaki çıktıyı alıyorum:
--2018-09-28 18:00:32-- https://www.example.com/some_api
Resolving www.example.com (www.example.com)... 46.xxx.yyy.zzz
Connecting to www.example.com (www.example.com)|46.xxx.yyy.zzz|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://example.com/ [following]
--2018-09-28 18:00:32-- https://example.com/
Resolving example.com (example.com)... 46.xxx.yyy.zzz
Connecting to example.com (example.com)|46.xxx.yyy.zzz|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `/dev/null'
0K .......... .......... .......... .......... .......... 57.4M
50K .......... .......... .......... ........ 4.50M=0.009s
2018-09-28 18:00:33 (9.40 MB/s) - `/dev/null' saved [90479]
Açıkçası, istek DocumentRoot dizinine (index.php dosyasını içeren) yönlendirilir, ancak senkronizasyon yürütülmez.
Bu noktadan sonra, daha ileriye nasıl devam edeceğimi bilmiyorum, çünkü API'ler ve belirtilen koşullar altındaki davranışları hakkındaki bilgilerim az. Belki de URL’nin uygun bir şekilde yeniden yazılması yeterli olacaktır.
Öyleyse sorum şu: API çağrısını tekrar nasıl çalıştırabilirim?