.htaccess RewriteRule
Sziasztok!
Azt szeretném elérni, hogy az oldal elérhető legyen kiterjesztés nélkül, illetve html kiterjesztés esetén irányítsa át a kiterjesztés nélküli oldalra.
Következő kóddal próbálkoztam:
Ez működik is addig, míg nincs ugyanolyan nevű mappa és php fájl, ugyanabban a könyvtárban.
Ha ugyanaz a php-nak és a mappának a neve, 404-es hibaüzenet jön elő, ha nem adom meg az url-ben a .php kiterjesztést.
Mit javítsak a kódon?
Köszönöm előre is a segítséget!
■ Azt szeretném elérni, hogy az oldal elérhető legyen kiterjesztés nélkül, illetve html kiterjesztés esetén irányítsa át a kiterjesztés nélküli oldalra.
Következő kóddal próbálkoztam:
RewriteEngine On
RedirectMatch 301 (.*)\.html$ http://honlap.hu$1
RedirectMatch 301 (.*)\.htm$ http://honlap.hu$1
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
RedirectMatch 301 (.*)\.html$ http://honlap.hu$1
RedirectMatch 301 (.*)\.htm$ http://honlap.hu$1
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
Ez működik is addig, míg nincs ugyanolyan nevű mappa és php fájl, ugyanabban a könyvtárban.
Ha ugyanaz a php-nak és a mappának a neve, 404-es hibaüzenet jön elő, ha nem adom meg az url-ben a .php kiterjesztést.
Mit javítsak a kódon?
Köszönöm előre is a segítséget!
-d
Már próbálgattam, de nem megy...
Szóval próbálgattam, hogy beszúrok olyan sorokat, mint hogy:
RedirectMatch 301 (.*)\$ http://honlap.hu$1.php
de csak elrontja az egészet.
Meg amúgy se akarom átirányítani a .php-s url-re.
Légy szíves, kicsit konkrétabb választ adj.
A RewriteCond-ot a
A RewriteCond-ot a RedirectMatch feltétele
RedirectMatch 301 (.*)\.html$ http://probalgatasok.net16.net$1
RedirectMatch 301 (.*)\.htm$ http://probalgatasok.net16.net$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
Így is ugyan az a gond, mint eddig: ha van ilyen nevű mappa is és fájl is, akkor 404-es error.
pl: "index.php" fájl és "index" mappa
Szóval mit tegyek a
RewriteCond %{REQUEST_FILENAME} -d
ágba?Meg van, mi a gubanc, de nem tudom, hogy kell megoldani
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
Ha mappát is talál, valamiért az url után teszi a / jelet, így a "mappa/.php" fájlt keresi. Ha a mappába beleteszek egy ilyen, ".php" nevű fájlt, azt tölti be.
Hogy vegyem ki a / jelet, hogy ne menjen bele a mappába, hanem a mappa nevével egyező php fájlt nyissa meg?
Hogyan
Ha elkészültél, ne felejtsd el 0-ra állítani.
2, A RewriteRule-ban van egy külső és egy belső zárójel, a $1-be a külső tartalmát fogja beilleszteni, mert azt találja meg elsőnek. Vagy vedd ki a külső zárójelet, vagy pedig $2 legyen a végén.
Egy könyvtárral feljebb küld
Pl:
domain.com/mappa/nev url esetén, ha van ilyen mappa, akkor
domain.com/mappa/.php fájlt keresi.
eddig ez volt:
domain.com/mappa/nev url esetén, ha van ilyen mappa, akkor
domain.com/mappa/nev/.php fájlt keresi
Még akkor is, ha "domain.com/mappa/nev.php" is létezik.
Akkor viszont, ha nem létezik a "domain.com/mappa/nev" mappa, akkor a domain.com/mappa/nev.php fájlt betölti.
Hogy kéne eltüntetni azt a fránya / jelet a .php elől, mappa esetén?
Kerülő megoldás
RedirectMatch 301 (.*)\.html$ http://dom.com$1
RedirectMatch 301 (.*)\.htm$ http://dom.com$1
RedirectMatch 301 ^/(.*)aaa(.*)\/$ /$1aaa$2_segednev
RewriteCond %{REQUEST_URI}\.php !-f
RewriteRule ^([^.]+)_segednev$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Ezzel az oldal kap egy "segédnevet" az url végére. (kivéve, ha a fő könyvtárra hivatkozunk)
Ez jól jöhet, ha kereső optimalizálni akarjuk az oldalt egy szóra.
Hátrányos lehet, ha könnyen megjegyezhető url címekhez akarjuk rendelni a könyvtárakat.
Hátránya, hogy minden mappát fel kell sorolni a negyedik sorral, ami a fő könyvtárban van.
Van ötlet, hogy hogyan lehetne elhagyni a "_segednev" részt?
Vagy hogy lehet megoldani, hogy ne kelljen felsorolni az összes főkönyvtár beli mappát?
Csak szükség esetén rakja bele a segédnevet...