Pagina 1 din 1

Eroare 404 la Mod-Rewrite cu accesare director

Scris: Vin Iun 15, 2018
de Stefan
Salut, am facut ca sa pot accesa fisierele php fara a mai fi nevoie de extensie (si fara sa mai redirectioneze catre 404.php daca se acceseaza o pagina inexistenta), dar acum am o problema

URL normal: localhost/scoala/
URL accesat (exemplu) : localhost/scoala/pagina/ imi returneaza 404 chiar daca folderul exista si in acest folder este si index.php

.htaccess

Cod: Selectaţi tot

Options -Indexes

#######
# Afisare fisiere php fara extensie
######
RewriteEngine On
RewriteRule ^([^\.]+)$ $1.php [NC,L]

######
# Schimbare url pentru blog
######
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([^/-]+)/?$ post.php?id=$1 [QSA,L]

######
# Pagina pentru eroarea 403/404
######
ErrorDocument 403 /scoala/404
ErrorDocument 404 /scoala/404

Daca modific in acest fel acea linie functioneaza normal dar dupa ma redirectioneaza iar catre 404.php fara a mai pastra URL-ul curent

Cod: Selectaţi tot

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1.php [R] 

Eroare 404 la Mod-Rewrite cu accesare director

Scris: Vin Iun 15, 2018
de MarPlo
Salut,
Incearca sa faci si un RewriteRule pentru: /scoala/pagina.

Cod: Selectaţi tot

RewriteRule ^blog/([^\/-]+)/?$ post.php?id=$1 [QSA,L]
RewriteRule ^scoala/([^\/-]+)/?$ scoala/index.php?id=$1 [NC,L]
- Dar posibil ca va fi altceva care nu merge.

Problema e daca folosesti pentru adresele URL prea multe fisiere .php diferite, si afisarea depinde de locatia lor pe server.
Mai usor ar fi sa folosesti maxim 2-3 adrese de fisiere php la redirect din URL, cu parammetri specifici, iar in acele fisiere incluzi ce e nevoie in functie de parametri transmisi.
Exemplu:
- htccess:

Cod: Selectaţi tot

RewriteRule ^([^\/]+)/([^\/]+)/([A-z0-9_\-]+)$ index.php?ct=$1&sct=$2&pg=$3 [NC,L]
[code]RewriteRule ^([^\/]+)/([A-z0-9_\-]+)$ index.php?ct=$1&pg=$2 [NC,L]
[code]RewriteRule ^([A-z0-9_\-]+)$ index.php?pg=$1 [NC,L]
Apoi, in "index.php" verifici daca ai: $_POST['ct'] (categoria), $_POST['sct'] (sub-categoria) si $_POST['pg'] (pagina); iar in functie de rezultatul verificarii incluzi si folosesti fisierele php de la adresa potrivita.