Adresa pagina web fara extensie de fisier

Aici este locul unde puteti scrie despre orice probleme /intrebari, in limita bunului simt, care nu au legatura cu subiectele din celelalte forumuri, sau cu materialele de pe site.
diwsoft
Mesaje: 10

Adresa pagina web fara extensie de fisier

Buna ziua dragi dezvoltatori,
sunt incepator, v-ati dat seama, din moment ce vin la voi cu aceasta solicitare.
Vreau sa stiu cum se poate ascunde, sau ce metoda trebuie folosita, pentru ca extensia paginii web din cadrul unui site sa nu se poata vizualiza in momentul rularii acesteia de catre server.

EX: in loc de : siteulmeu.ro/contact.html sa se vada: siteulmeu.ro/contact

Va multumesc

MarPlo
Salut,
Se poate face cu modulul mod-rewrite in fisier .htaccess.
De exemplu, intr-un fisier .htaccess adaugi acest cod:

Cod: Selectaţi tot

Options +FollowSymLinks
RewriteEngine On

# Incepe comanda pt. mod-rewrite
RewriteRule ^contact$ contact.html [NC,L]
Apoi, link-ul din tag-ul <a> catre acea pagina se scrie fara extensie.

Cod: Selectaţi tot

<a href='contact'>Contact</a>
- Un tutorial despre Mod-rewrite in .htaccess e la pagina:
marplo.net/php-mysql/mod_rewrite.html

Sau poti sa gasesti si pe internet la cautare: tutorial mod-rewrite htaccess.

diwsoft
Multumesc frumos pentru raspuns si pentru promptitudine.
Voi scrie si eu in .htaccess codul de mai sus.
Toate cele bune si inca o data multumesc.

Edit:
De cateva minute am incercat sa scriu in .htaccess ( din radacina website-ului) codul mentionat mai sus de tine si nu a functionat, am primit error 500.
Dupaia am scris codul in .htaccess existent in public_html, si nu functioneaza nici aici, primind aceeasi eroare.
Mentionez ca am scris codul pe pe rand, nu in ambele fisiere .htaccess odata.

este ceva gresit?

mentionez ca in fisierele .htaccess( in ambele) mai este ceva scris.

MarPlo
Fisierul .htaccess se adauga in public_html.
Posteaza aici tot codul din .htaccess asa cum e.
Ca sa functioneze codul dat ca exemplu in raspunsul anterior, pe server e necesar sa ai fisierul contact.html.
- Pentru teste poti sa incerci codul pe localhost cu xampp.

diwsoft
Acesta este codul existent in .htaccess

Cod: Selectaţi tot

RewriteEngine On
#First rewrite any request to the wrong domain to use the correct one (here www.)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteOptions inherit


RewriteEngine on


RewriteCond %{HTTP_REFERER} !^https://www.siteulmeu.ro/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^https://www.siteulmeu.ro$      [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC]
Multumesc mult pentru intelegere

Marius
Daca adaugi urmatorul cod dupa ce ai tu in .htaccess, ar trebui sa functioneze.

Cod: Selectaţi tot

# Codul tau, apoi:

RewriteRule ^contact$ contact.html [NC,L]
- Am testat si merge daca pe server (in public_html) e si fisierul contact.html.

Dupa adaugarea codului in .htaccess, daca accesezi in browser adresa fara extensia '.html', functionraza?: siteulmeu.ro/contact

diwsoft
waw. Daaaaaaaaaaaaa functioneaza.
imi place.
Oare imi puteti spune ce sa fac ca sa functioneze si cand apelez formularul de contact din meniul existent pe pagina principala ?
Pentru celelalte pagini existente pe siteulmeu.ro trebuie sa creez in .htaccess comenzi asemanatoare?

MarPlo
In acel menu pune link-ul asa cum vrei sa apara in browser:

Cod: Selectaţi tot

<a href='/contact'>Contact</a>
Pentru celelalte pagini din site, depinde daca sunt pagini statice (cu fisiere .html) sau dinamice cu php.

diwsoft
MarPlo, iti multumesc pentru sprijinul acordat si pentru rabdare. Dar nu in ultimul rand pentru rapiditatea raspunsurilor tale, la problema mea. Am facut modificarile asa cum m-ai indrumat tu si functioneaza.
Multumesc inca o data si toate cele bune iti doresc.

diwsoft
Salut MarPlo.
Daca mai ai rabdare, doresc sa te intreb cum pot sa fac ca pagina sa arate sub forma siteulmeu.ro/contact/ si nu siteulmeu.ro/contact
Eu am incercat sa scriu in fisierul .htaccess urmatoarele linii:

Cod: Selectaţi tot

RewriteRule ^contact/$ contact.html [NC,L] 
RewriteRule ^despre/$ despre.html [NC,L]
insa cand din meniu apelez pagina contact aceasta se deschide, insa daca din aceasta pagina apelez o alta pagina , respectiv despre.html, in adresa browser-ului imi apare ceva de genul :
siteulmeu.ro/contact/ despre/, si bineinteles nu functioneaza. Daca apelez alte pagini, pe care le-am redenumit ca in exemplul de mai sus, acestea mi se adauga la sfartit in bara de adrese a browserului. EX: siteulmeu.ro/contact/ despre/ altapagina1/ altapagina2/.......

Ma mai poti ajuta in a rezolva si aceasta problema?
Multumesc

MarPlo
Din ce am inteles, problema ar fi cu baza de pornire a urmatoarei pagini. Adresa URL se deschide incepand de la adresa directorului din browser.
Asta nu tine de .htaccess, ci de codul din pagina, respectiv adresa url adaugata in meniu si link-uri (la tagul <a>).
Sunt mai mullte variante de rezolvare:

- Sa folosesti in link-uri adresa completa:

Cod: Selectaţi tot

<a href='//domain.net/contact/'>Nume</a>
- Sa adaugi adresa in link relativa la baza /root-ul site-ului (cu '/' la inceput):

Cod: Selectaţi tot

<a href=''/contact/'>pagina in root</a>
<a href=''/dir/pagina'>pagina in director din root</a>
- Sa adaugi in zona <head> a documentului html tagul <base> cu baza de desechidere a paginii (atentie, acest tag afecteaza si adresele relative pentru fisiere css, js si imagini din acea pagina):

Cod: Selectaţi tot

<base href="https://marplo.net/" />

Subiecte similare