Jak usunąć rozszerzenie pliku z adresu strony internetowej?

Projektuję stronę internetową. Chcę, aby adres mojej strony wyglądał jak poniższy obrazek:

rozszerzenia nazw plików takie jak (PHP/JSP) są ukryte

Nie chcę, żeby moja strona wyglądała jak http://something.com/profile.php Chcę, aby .php rozszerzenie zostało usunięte w pasku adresu, gdy ktoś otworzy moją stronę. Innymi słowy chcę, aby moja strona była jak: http://something.com/profile

Jako drugi przykład możesz przyjrzeć się samemu adresowi strony internetowej Stoskoverflow.

Czy ktoś może mi pomóc żeby to zrobić? Dzięki!
Author: Vadim Kotov, 2011-06-30

10 answers

Po prostu dodaj .plik htaccess do folderu głównego witryny (na przykład /home/domains/domain.com/htdocs/) o następującej treści:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
 68
Author: Igor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 12:45:48

Najpierw sprawdź, czy moduł mod_rewrite jest zainstalowany. Następnie należy uważać, aby zrozumieć, jak to działa, wiele osób dostaje go do tyłu.

Nie ukrywasz adresów URL ani rozszerzeń. To, co robisz, to tworzenie nowego adresu url, który kieruje do starego, na przykład

URL do umieszczenia na twojej stronie będzie yoursite.com/play?m=asdf

Or better yet

Yoursite.com/asdf

Mimo że katalog asdf nie istnieje. Następnie z zainstalowanym mod_rewrite wstawiasz to w .htaccess. Zasadniczo mówi, jeśli żądany adres URL nie jest plikiem i nie jest katalogiem, skieruj go do mojego skryptu:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /play.php [L] 

Prawie gotowe - teraz wystarczy napisać kilka rzeczy do skryptu PHP, aby przeanalizować nowy adres URL. Chcesz to zrobić, aby stare też działały - to, co robisz, to utrzymywanie systemu, w którym zmienna jest zawsze dokładnie taka sama lub Tworzenie tabeli bazy danych, która koreluje "przyjazny dla SEO URL" z ID Produktu. Przykładem może być

/Some-Cool-Video (co równa się product ID asdf)

Korzyści z tego? Wyszukiwarki będą indeksować słowa kluczowe " jakiś fajny film."asdf? Kto będzie tego szukał?

Nie mogę podać szczegółów, jak to zaprogramować, ale weź łańcuch zapytania, zdejmij koniec

yoursite.com/Some-Cool-Video 

Zamienia się w "asdf"

Następnie Ustaw zmienną m na tę

M = asdf

Więc oba adresy URL nadal będą trafiać do tego samego produktu

yoursite.com/play.php?m=asdf 
yoursite.com/Some-Cool-Video 

Mod_rewrite może zrobić wiele innych ważnych rzeczy też, Google dla niego i go aktywować na serwerze (to prawdopodobnie już zainstalowany.)

Odniesienie : http://www.scriptscoop2.com/t/1a0c2b81484d/php-how-to-remove-file-extension-from-website-address.html

 12
Author: Shiv Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-11 07:57:47

Masz inny wybór. Jednym z nich jest utworzenie folderu o nazwie "profil" i zmiana nazwy " profil.PHP " do " domyślnie.php "i umieścić go w folderze "profil". i możesz wydawać zamówienia na tę stronę w ten sposób:

Stara strona: http://something.com/profile.php?id=a&abc=1

Nowa Strona: http://something.com/profile/?id=a&abc=1

Jeśli nie jesteś zadowolony zostaw komentarz dla skomplikowanych metod.

 4
Author: Iman Hejazi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-30 12:47:26

Problem z utworzeniem katalogu i utrzymaniem indeksu.php in it is that

  1. twoje linki z menu przestaną działać
  2. będzie zbyt wiele katalogów. Na przykład, będzie oddzielny katalog dla każdego pytania tutaj na stackoverflow

Rozwiązania są 1. Mod REWRITE (jak sugerowano powyżej) 2. użyj kodu php, aby dynamicznie dołączać inne pliki do pliku indeksu. Czytaj więcej tutaj http://inobscuro.com/tutorials/read/16/

 2
Author: Rahul Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-14 07:27:43

Oto prosty sposób PHP, którego używam.
Jeśli strona jest wymagana z .PHP extension następnie nowe żądanie jest wykonane bez .rozszerzenie php. The .rozszerzenie php nie jest już wyświetlane w polu adresu przeglądarki.

Wymyśliłem to rozwiązanie, ponieważ żadne z wielu .sugestie htaccess działały dla mnie i było szybciej zaimplementować to w PHP niż próbować dowiedzieć się, dlaczego .htaccess nie działa na moim serwerze.

Umieść to na początku KAŻDEGO pliku PHP :

include_once('scripts.php');  
strip_php_extension();  

Następnie umieść te funkcje w pliku ' scripts.php": {]}

//==== Strip .php extension from requested URI  
function strip_php_extension()  
{  
  $uri = $_SERVER['REQUEST_URI'];  
  $ext = substr(strrchr($uri, '.'), 1);  
  if ($ext == 'php')  
  {  
    $url = substr($uri, 0, strrpos($uri, '.'));  
    redirect($url);  
  }  
}  

//==== Redirect. Try PHP header redirect, then Java, then http redirect
function redirect($url)  
{  
  if (!headers_sent())  
  {  
    /* If headers not yet sent => do php redirect */  
    header('Location: '.$url);  
    exit;  
  }  
  else  
  {
    /* If headers already sent => do javaScript redirect */  
    echo '<script type="text/javascript">';  
    echo 'window.location.href="'.$url.'";';  
    echo '</script>';  

    /* If javaScript is disabled => do html redirect */  
    echo '<noscript>';  
    echo '<meta http-equiv="refresh" content="0; url='.$url.'" />';  
    echo '</noscript>';  
    exit;  
  }  
}  

Oczywiście nadal musisz mieć ustawiony Apache, aby przekierować każde żądanie bez rozszerzenia do pliku z rozszerzeniem. Powyższe rozwiązanie po prostu sprawdza, czy żądany URI ma rozszerzenie, jeśli to zrobi, żąda URI bez rozszerzenia. Następnie Apache wykonuje przekierowanie do pliku z rozszerzeniem, ale tylko żądany URI (bez rozszerzenia) jest wyświetlany w pole adresu przeglądarki. Zaletą jest to, że wszystkie linki "href" w kodzie mogą nadal mieć pełną nazwę pliku, tj. łącznie z.rozszerzenie php.

 2
Author: Tony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-15 14:52:38

Właściwie najprostszym sposobem manipulowania tym jest

  1. Otwórz nowy folder na serwerze, np. "Data"
  2. Put index.php (lub index.html) w it

A następnie URL www.yoursite.com/data przeczyta ten indeks.plik php. Jeśli chcesz pójść dalej, otwórz w nim podfolder (np. "lista"), umieść inny indeks.php w tym folderze i możesz mieć www.yoursite.com/data/list uruchom ten plik PHP.

W ten sposób możesz mieć pełną kontrolę nad tym, bardzo przydatne dla SEO.

 1
Author: Dan Horvat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-01 13:00:19

Tak samo jak Igor, ale powinno działać bez linii 2:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
 1
Author: Jon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-18 10:19:03

Usuń rozszerzenie pliku .htaccess

Oryginalny URL: http://ravinderrathore.herobo.com/contact.php

Reguła Htaccess do usunięcia .php,html itp. rozszerzenie pliku z adresu url.

RewriteRule ^(.*)$ $1.php

After Rewriting: http://ravinderrathore.herobo.com/contact

RewriteEngine on

RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/

RewriteRule ^index(.*)?$ index.php$1 [L,QSA]

RewriteRule ^login_success(/)?$ login_success.php [L,QSA]

RewriteRule ^contact(/)?$ contact.php [L,QSA]
 1
Author: Ravinder Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-17 12:07:32

Tony, Twój skrypt jest ok, ale jeśli masz 100 plików? Trzeba dodać ten kod we wszystkich tych :

Include_once ('Skrypty.php');
strip_php_extension ();

Myślę, że do każdego pliku php dołączasz menu (prawdopodobnie twoje menu jest wyświetlane na wszystkich stronach internetowych), więc możesz dodać te 2 linijki kodu tylko w pliku menu. Ta praca dla mnie: d

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-21 08:42:59

Prawie tak samo z pierwszą odpowiedzią o, ale trochę więcej korzyści.

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Po prostu dodaj, jeśli masz inne rozszerzenie pliku w swoich witrynach

 0
Author: Võ Minh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-28 06:06:10