Jump to content
php.lv forumi

mod_rewrite: lasit citu direktoriju un pa tieso nelaut


Valcha

Recommended Posts

Vēlos, lai, lasot direktoriju a, patiesībā lasītos direktorija b. Tai skaitā visas tās apakšdirektorijas.

Bet vēlos arī, lai b pa tiešo nevarētu lasīt - 404 kļūda.

 

Daru tā:

 

RewriteCond %{REQUEST_URI} b/

RewriteRule ^(.*)$ / [R=404,L]

 

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(a)/(.*)$ b/$2 [L]

 

Un sanāk tāda lieta, ka tikko kā pielieku, lai nelasās b, tā arī a vairs nelasās. Vai kādam ir versijas, ko daru nepareizi un kā atrisināt šo lietu?

Būšu priecīgs ieraudzīt, kur kļūdos.

Link to comment
Share on other sites

Man tas neder - patiesībā man tur ir bik sarežģītāk -

RewriteRule ^(a|c)/(.*)$ b/$2 [L]

 

Un tad es pēc tam smuki zinu, vai nāk no a vai no c un attiecīgi dinamiski reaģēju. Fiziski direktorija ir viena, bet lasu to divejādi..

bubu - ja reiz neiesaki versiju, tātad laikam jau tas nav tik vienkārši :)

 

Bet ja kāds man vismaz paskaidrotu, kādēļ man nesanāk??

 

Jo it kā pie pirmā nosacījuma, ja piepildās, izpildās tālāk nelaist un apstājas [L].

Bet, ja trāpa otrā nosacījumā - atkal - izpildās un apstājās [L].

 

Tad kāpēc pēc rezultāta man izskatās, ka vispirms izpildās 2. - RewriteRule ^(a)/(.*)$ b/$2 [L] un pēc tam 1. - RewriteRule ^(.*)$ / [R=404,L] ?

Edited by Valcha
Link to comment
Share on other sites

Paldies, blackhalt, bet tas pāradresē pa īstam, bet man vajag, lai vizuāli paliek a direktorijā, bet patiesībā lasītu b. Labi, izskatās, ka iešu parakstīties ārvalstu forumos.

Atradu! Es varu noteikt, vai pieprasījumam ir redirect statuss! Ja tāds nav, tad neļauju lasīt pa tiešo:

 

# ja redirekt statuss ir tukšs

RewriteCond %{ENV:REDIRECT_STATUS} ^$

# ja uri satur neatļauto pa tieši b/ direktoriju

RewriteCond %{REQUEST_URI} ^b/

# dodam 404 kļūdu!

RewriteRule ^(.*)$ / [R=404,L]

 

Paldies!

Edited by Valcha
Link to comment
Share on other sites

×
×
  • Create New...