http post kérés átirányítása RewriteCond és RewriteRule-al
Üdvözlet!
Olyan kérdésem volna, amelyhez nem találtam eddig megoldást.
Linux-apache webszerveren a htaccess-ben kéne megoldani a következő problémát:
Egy felhasználói (asztali) alkalmazás küldene egy post kérést a webszervernek a következő url-re pl http://www.domain.hu/check.php (egy post paraméterrel).
Eddig működött a dolog, de a domain elérését megváltoztattuk http://domain.hu/check.php -re, tehát lekerült a www a cím elejéről.
Az asztali alkalmazás kódját már nem lehet megváltoztatni.
Ez a fenti kérés pedig így nem akar működni!
Erre szeretnék megoldást találni. Köszi!
■ Olyan kérdésem volna, amelyhez nem találtam eddig megoldást.
Linux-apache webszerveren a htaccess-ben kéne megoldani a következő problémát:
Egy felhasználói (asztali) alkalmazás küldene egy post kérést a webszervernek a következő url-re pl http://www.domain.hu/check.php (egy post paraméterrel).
Eddig működött a dolog, de a domain elérését megváltoztattuk http://domain.hu/check.php -re, tehát lekerült a www a cím elejéről.
Az asztali alkalmazás kódját már nem lehet megváltoztatni.
Ez a fenti kérés pedig így nem akar működni!
Erre szeretnék megoldást találni. Köszi!
.htaccess?
htaccess röviden
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.domain\.hu [NC]
RewriteRule ^(.*)$ http://domain\.hu/$1 [R=301,L]
RewriteRule check\.php http://domain.hu/checkpost\.php/$1 [NC,P]
# ---
# A RewriteCond-ot se tudtam beállítani, úgyhogy ez kimaradt.
# Tehát a check.php post kérését kéne átpasszolni a checkpost.php-nak.
Paraméterek
kivétel
A többi mehetne a www nélkülire.
Valami ilyesmivel
RewriteCond %{REQUEST_METHOD} !=POST [NC] # es nem POST
RewriteRule (.*) http://www.domain.com/$1 [R=302,L] # irany www domain
Vagy ha csak egyes url-ekre akkor elvileg szűrhetsz így:
RewriteCond %{REQUEST_URI} !^check\.php$ # es nem a check.php
RewriteRule (.*) http://www.domain.com/$1 [R=302,L] # irany www domain
nem
Tanácstalan vagyok,
$ curl -v http://domain.com/check.php
# POST teszt, itt http 200 -nak kellene visszajonnie)
$ curl -v -X POST http://domain.com/chech.php
A megadott pattern is lehet a probléma ha van RewriteBase megadva, vagy subdir -en belül van a file.
RewriteLog szintén segíthet debuggolásban.
(Most látom csak, hogy a fenti példában a www nélküliről küldenélek a www -vel rendelkezőre. domaineket ertelemszerűen cserelgetheted (-: )
Ez a htaccess most
Itt az aktuális kód:
Options -Indexes +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{HTTP_HOST} =www\.domain\.com
RewriteCond %{REQUEST_URI} !^requests/checkversionid\.php$
RewriteRule (.*) http://domain.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain\.com/$1 [R=301,L]
---
get kérésre is lecseréli továbbra is..
\.
Nem szükséges escapelni a "." karaktereket mivel ez nem regexpként, hanem simán string egyezést vizsgál. Lehet egyszerűen (nincs "\", mint korábbi példában):
Vagy mint az alatta lévő szabályban (nincs "=", mint a működő szabályban):
Ha jól értem a dolgot egyébként elég volna csak az első blokk, a második most kivétel nélkül átdobál mindent igy ha az elsőn át is jut a kivételed most akkorse működne.
Ha elérési út alapon adod meg a kivételt akkor minden request típus (GET, POST, stb.) kivételt fog képezni.
Akkor most ez van, de nem
Options -Indexes +FollowSymLinks -MultiViews
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com
RewriteCond %{REQUEST_URI} !^requests/checkversionid\.php$
RewriteRule (.*) http://domain.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
RewriteRule ^(.*)$ http://domain\.com/$1 [R=301,L]
Most se sikerült eltalálnod,
Legyen csak ez benne, a legutóbb postolt utolsó két sor nélkül:
RewriteCond %{REQUEST_URI} !^requests/checkversionid\.php$ # a kivetel
RewriteRule (.*) http://domain.com/$1 [R=301,L] # mindent ami nem kivetel atiranyitunk
De az összes többi url-t át
RewriteCond %{REQUEST_URI} !^([^\+]+)checkversionid\.php$
RewriteRule (.*) http://domain.com/$1 [R=301,L]
Ez lett a jó!
Igazad volt, benéztem.
Köszönöm a segítséget!
canonical
canonical
Légysz írj kódot, ha lehet!
A szöveg magyarul van,
Nem segít
Csak arra próbáltam
Ajánáls
Illetve nem tudjuk, hogy pl. SEO mellett nem kell-e ügyfél "de én azt akarom ott fent látni hogy" kívánalmának is megfelelni.