Mārtiņš ([info]skalpelis) rakstīja [info]koderi kopienā,
@ 2003-06-13 21:52:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Apache
Uzliku mod_rewrite. Darbojas smuki, urļus pārraksta smuki, bet vienīgā problēma - kad pieprasa domēnu tipa www.whatever.lv/, tad ir ok, bet pieprasot to pašu www.whatever.lv (bez "/") rāda Kļūdu Nr. 400 - Bad Request.
Kāds varētu ieteikt, kā dabon good request šādā situācijā (variants RewriteEngine Off nederēs :) )?

mod_rewrite@apache.org
Izklāsts īsumā:
iekš .htaccess ir:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !–f
RewriteCond %{REQUEST_FILENAME} !–d
RewriteRule ^(.*)$ index.php?dir=$1 [QSA,L]

(tatt fra internettguru laas webpagen).
Problēma: viss ir ok, un darbojas spīdīgi un jauki. Taču, kad to pašu ieliekam citā .htaccessa-ā dziļāk failsistēmā, tb. nevis uz attiecīgā domēna root-a, bet gan kaut kādā subdirā, tad uz pieprasījumu, piemēram, www.domeens.lv/janis izmet 400 - Bad Request, kā arī pie www.domeens.lv/janis/ neatpazīst failus un direktorijas un iemet jebko iekš attiecīgā mainīgā $dir, kas tiek nodots uz attiecīgo index.php šajā gadījumā.

Risinājums:
RewriteBase /janis
somehow tagad viss darbojas.
"Despite the tons of examples and docs, mod_rewrite is voodoo. Damned cool voodoo, but still voodoo."
Tagad man tā liekas diezgan triviāla un vienkārša problēma, protams. :/ Bet es paredzu, ka gan jau vēl kādam kaut kas līdzīgs ir radies vai radiisies.
Īsumā: ja gribi, lai mod_rewrite darbojas, kā nākas, uzraksti pareizu RewriteBase


(Ierakstīt jaunu komentāru)


[info]bh
2003-06-13 21:58 (saite)
Kaut kur kādu zīmi varbūt esi aizmirsis pierakstīt?
http://httpd.apache.org/docs/mod/mod_rewrite.html

(Atbildēt uz šo) (Diskusija)


[info]skalpelis
2003-06-13 22:09 (saite)
Zīmes, cik jaušu, visas ir ok.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !–f
RewriteCond %{REQUEST_FILENAME} !–d
RewriteRule ^(.*)$ index.php?dir=$1 [QSA,L]


Šitā izskatās pagaidām. Un, atzīšos, tas ir paņemts no Laacza.
Principā viss darbojas korekti, ja neskaita to problēmu ar "/" pēc plikā domēna.

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bh
2003-06-13 22:54 (saite)
vienu atradu linku moš noder:
http://www.google.com/search?q=mod%5Frewrite+Bad+Request

(Atbildēt uz šo) (Iepriekšējais)

Arī gribu šitā :)
[info]bh
2003-06-13 23:03 (saite)
bet ar php :)
reku vēl linki:
http://www.google.com/search?q=search+engine+friendly+php

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)

Re: Arī gribu šitā :)
[info]skalpelis
2003-06-13 23:30 (saite)
Paldies :)

tagad rakājos :)

(Atbildēt uz šo) (Iepriekšējais)


[info]skalpelis
2003-06-14 00:00 (saite)
Nui... Stundu rakājos pa tiem manuāļiem, galu galā pats izdomāju, un nekas jau tas arī nebija :)

Vēl pamēģināju, uz tīra domēna patiešām viss strādāja korekti arī pirms tam, bet ja kaut kur dziļāk to ieliek, piem. www.whatever.lv/think/, tad tikai radās tā problēma

Nu, un tad ierakstīju:
RewriteBase /think
i vsjo

(Atbildēt uz šo) (Diskusija)


[info]bh
2003-06-14 00:28 (saite)
Derētu izmēģināt uz latneta, nez vai sanāks man :)
Kas ir RewriteBase /janis? cik tālu uz augšu viņu "jāņem"?
p.s.
te kaut kāds turpat atraksts php variants, nezinu kā:
global $REQUEST_URI;
global $SCRIPT_NAME;
$path = $SCRIPT_NAME;
$base_href = dirname($path);
$vars = str_replace($path, "", $REQUEST_URI);
$array = explode("/",$vars);
$num = count($array);
for ($i = 0 ; $i < $num ; $i++) {
$url_array["arg".$i] = $array[$i];
}
$page = $url_array["arg1"];

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]skalpelis
2003-06-14 00:38 (saite)
tas RewriteBase /subdir jāieliek, ja tu attiecīgo .htaccess-u liec kaut kādā subdirā, nevis domēna root-ā

Bet ja ar "cik tālu uz augšu jāņem" tu domāji atrašanās vietu pašā .htaccess-ā, tad man ir visnotaļ pamatotas aizdomas, ka zem RewriteEngine On. Vismaz man tā ir, un darbojas.

īstenībā šis te ir divu stundu garuma meklējums, lai atrisinātu kaut ko šausmīgi elementāru un vienkāršu kā piemēram, izlaistu rindiņu. Bet nu...

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bh
2003-06-14 00:51 (saite)
Nu bet tagad Tev būtu .htaccess rootā? bet ja ir RewriteBase /janis tad tev sanāk, ka darbojas www.domens.lv/janis ,
bet kas tagad ir ar to www.domens.lv bez "/"?

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]skalpelis
2003-06-14 01:00 (saite)
domeens.lv šajā gadījumā ir vispār bez .htaccess, kur būtu paredzēta kaut kāda rewrite iespējamība

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]bh
2003-06-14 01:17 (saite)
Nu tagad skaidrs. iemetu .htaccess iekš rūta, kaut kas nostrādāja, tas nozīmē vismaz, ka man tur ir rewrite modulis :) Bet sviests, gan man tur panesās, bildes pazuda u.t.t. bet nu šodien to nerisināšu. Atliku atpakaļ :)

(Atbildēt uz šo) (Iepriekšējais) (Diskusija)


[info]skalpelis
2003-06-14 11:39 (saite)
Bildes pazuda tāpēc, ka uz bildes pieprasījumu arī to rewrito - tip $dir='whatever.jpg'
Tad pamēģini varbūt kaut ko ar RewriteBase izdarīt.

(Atbildēt uz šo) (Iepriekšējais)


Neesi iežurnalējies. Iežurnalēties?