This is a discussion on mod_rewrite issue with apache 2.0 within the Apache Web Server forums, part of the Web Server and Related Forums category; Hallo Folks, I have an issue with mo_rewrite. I have setted up but it does not work as expected. Here ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Hallo Folks,
I have an issue with mo_rewrite. I have setted up but it does not work as expected. Here is a snippet: # Login infopage RewriteRule ^login/?$ public.php?node=login&%{QUERY_STRING} [L] # Need extra Page for login into Admin area RewriteRule ^login/admin public.php?node=login&page=admin&%{QUERY_STRING} [L] RewriteRule ^login/member public.php?node=login&page=member&%{QUERY_STRING} [L] RewriteRule ^login/error public.php?node=login&page=error&%{QUERY_STRING} [L] # Admin/Private Area RewriteRule ^admin/([a-z0-9]+)/?$ admin.php?node=$1&%{QUERY_STRING} [L] RewriteRule ^admin/?$ admin.php?node=home&%{QUERY_STRING} [L] The login stuff is working fine when I have like an url: http://localhost/app/login/admin But http://localhost/app/admin/help does not work. Why? When I take a look in the $_SERVER vars from the php output I can see following difference what I can't explain. This is the output from the working ones: [SCRIPT_FILENAME] => /var/www/html/valicek_dev/public.php [REMOTE_PORT] => 1332 [REDIRECT_QUERY_STRING] => node=login [REDIRECT_URL] => /valicek_dev/login [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => GET [QUERY_STRING] => node=login [REQUEST_URI] => /valicek_dev/login [SCRIPT_NAME] => /valicek_dev/public.php [PHP_SELF] => /valicek_dev/public.php [PATH_TRANSLATED] => /var/www/html/valicek_dev/public.php [argv] => Array ( [0] => node=login ) [argc] => 1 This the output where it does not work: [SCRIPT_FILENAME] => /var/www/html/valicek_dev/admin.php [REMOTE_PORT] => 1343 [GATEWAY_INTERFACE] => CGI/1.1 [SERVER_PROTOCOL] => HTTP/1.1 [REQUEST_METHOD] => POST [QUERY_STRING] => [REQUEST_URI] => /valicek_dev/admin/home [SCRIPT_NAME] => /valicek_dev/admin.php [PATH_INFO] => /home [PATH_TRANSLATED] => /var/www/html/home [PHP_SELF] => /valicek_dev/admin.php/home [argv] => Array ( ) [argc] => 0 May someone can help me? Cheers Peter |
|
|||
|
"Peter Valicek" <sonny2@gmx.net> schreef in bericht
news:42bc59cb$0$219$9b622d9e@news.freenet.de... > I have an issue with mo_rewrite. On which version of Apache and on what platrom?? > I have setted up but it does not work as expected. > Here is a snippet: > # Login infopage RewriteRule ^login/?$ public.php?node=login&%{QUERY_STRING} [L] > # Need extra Page for login into Admin area > RewriteRule ^login/admin public.php?node=login&page=admin&%{QUERY_STRING} [L] > RewriteRule ^login/member public.php?node=login&page=member&%{QUERY_STRING} [L] > RewriteRule ^login/error public.php?node=login&page=error&%{QUERY_STRING} [L] Instead of '&%{QUERY_STRING} [L]' use[L,QSA] then collapse the three lines into ONE: RewriteRule ^login/(admin|member|error) public.php?node=login&page=$1 [L, QSA] > # Admin/Private Area > RewriteRule ^admin/([a-z0-9]+)/?$ admin.php?node=$1&%{QUERY_STRING} [L] > RewriteRule ^admin/?$ admin.php?node=home&%{QUERY_STRING} [L] > > The login stuff is working fine when I have like an url: > http://localhost/app/login/admin > > But http://localhost/app/admin/help does not work. > Why? No clue 'does not work' is not explaining which detail fails. What's in the error log?! Anything in an rewrite log?? > When I take a look in the $_SERVER vars from the php output I can see > following difference what I can't explain. > This is the output from the working ones: > [SCRIPT_FILENAME] => /var/www/html/valicek_dev/public.php > [REMOTE_PORT] => 1332 > [REDIRECT_QUERY_STRING] => node=login > [REDIRECT_URL] => /valicek_dev/login > [GATEWAY_INTERFACE] => CGI/1.1 > [SERVER_PROTOCOL] => HTTP/1.1 > [REQUEST_METHOD] => GET > [QUERY_STRING] => node=login > [REQUEST_URI] => /valicek_dev/login > [SCRIPT_NAME] => /valicek_dev/public.php > [PHP_SELF] => /valicek_dev/public.php > [PATH_TRANSLATED] => /var/www/html/valicek_dev/public.php > [argv] => Array > ( > [0] => node=login > ) > > [argc] => 1 > > This the output where it does not work: > [SCRIPT_FILENAME] => /var/www/html/valicek_dev/admin.php > [REMOTE_PORT] => 1343 > [GATEWAY_INTERFACE] => CGI/1.1 > [SERVER_PROTOCOL] => HTTP/1.1 > [REQUEST_METHOD] => POST > [QUERY_STRING] => > [REQUEST_URI] => /valicek_dev/admin/home > [SCRIPT_NAME] => /valicek_dev/admin.php > [PATH_INFO] => /home > [PATH_TRANSLATED] => /var/www/html/home > [PHP_SELF] => /valicek_dev/admin.php/home > [argv] => Array > ( > ) > > [argc] => 0 So, 'METHOD=POST is failing, where 'METHOD=GET' works. In the requesting page, change your the method property of the <FORM ... >tag to GET . A posted form does not append the field names and values to the URI; they are as the body of request. If the data is not in the QUERY_STRING you can not pass it along ... This confuses me, AFAIK loosing POSTed data on redirect only occurs on true redirects: with HTTP response code 30x and a location header send to the browser. Can you sniff some header pe with FireFox and loveHTTPheaders? HansH |