adres strony www, a rozszerzenie HTML/PHP

0

CO należy zrobić, by zamiast rozszerzenia .html lub .php:
kosmonauta80.pl/kontakt.html
Wystarczyło wpisać do przeglądarki:
kosmonauta80.pl/kontakt

2

Konfiguracja serwera HTTP, zależy z jakiego korzystasz.

2

Opcja 1:

Najprościej jeśli tego typu linków nie masz dużo i są one z góry znane to faktycznie można skorzystać z modułu mod_rewrite i pliku .htaccess zgodnie z tym co napisał @cerrato
Moduł mod-rewrite z obsługą plików .htaccess jest domyślnie instalowany na większości serwerów z serwerem Apache więc nie powinno być problemu z uruchomieniem.

Wówczas zawartość takiego pliku mogłaby wyglądać następująco:

Zawartość pliku .htaccess

RewriteEngine On

#przekierowanie na plik kontakt.php
RewriteRule ^kontakt$ kontakt.php

#przekierowanie na plik index.php obsługujący moduły (w jakiś sposób)
RewriteRule ^kontakt$ index.php&module=kontakt

Ma to jednak pewne ograniczenia jeśli lista adresów jest w jakiś sposób dynamiczna lub zapisana w bazie danych.

Opcja 2:

Jeśli natomiast adresy podstron są dynamiczne lub pochodzą z bazy danych wówczas lepiej napisać swój własny prosty "router", który jest parą dwóch plików:

Zawartość pliku .htaccess:

RewriteEngine On

#jeśli plik nie istnieje fizycznie to wszystko kieruj do pliku index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L]

Zawartość pliku index.php

<?php
  
  $urlContent [ 'kontakt' ] = "<div>To jest strona kontakt :-)</div>" ;
  $urlContent [ 'o-mnie' ] = "<div>To jest strona o mnie czyli o nikim ciekawym...</div>" ;
  $urlContent [ 'ciekawe/linki' ] = "<div>A tu mamy ciekawe linki <a href='https://4programmers.net/'>Smieszne rzeczy</a></div>" ;
    
  $pagePath = '/jesli-jest-podkatalog/' ; // <- ścieżka względna na serwerze do strony
                                          // gdy strona w głównym katalogu domeny to zostaje puste.
  
  $myUrl = str_replace ( $pagePath , '', parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH ) );

  if ( isset ( $urlContent [ $myUrl ] ) ){
    $content = $urlContent [ $myUrl ];
  } else {
    $content = "Nie znaleziono strony / adresu !!!";
  }
  
  echo "
    Twoj przyjazny lionk to: [{$myUrl}]
    <hr>
    <div style='color:red;font-size:18px;'>{$content}</div>
  ";  
    
1

Większość serwerów domyślnie zwraca plik index.html lub index.php gdy podasz tylko nazwę katalogu, albo nic nie podasz (samę domenę), jeśli plik o takiej nazwie wrzucisz do katalogu głównego. Jeśli domyślnie nie zadziała, wprowadź następujący wpis do konfiguracji Apache (nie trzeba żadnych modułów):

DirectoryIndex index.html
DirectoryIndex index.htm
DirectoryIndex index.php

Wtedy serwer najpierw sprawdzi istnienie plików index.html lub index.htm, potem index.php, a dopiero potem wyświetli indeks katalogu lub błąd.

2

Ja mam cały ruch który, nie jest plikiem fizycznym, przekierowany na index.php a tam zrobiony swój własny router który rozpoznaje ścieżki.

Konfiguracja w nginx:

location / {
 try_files $uri $uri/ /index.php?&$args;
}

location ~ \.php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 include /etc/nginx/fastcgi.conf;
}

Następnie w index.php rozpoznaje ścieżkę np. wg $_SERVER['REQUEST_URI'] i kieruję do odpowiedniego kontrolera który wyświetla stronę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1