Odebrat .php rozšíření s PHP

hlasů
3

Mohl bych použít nějakou pomoc tady. Já to s použitím opravit svou adresu, ale nemohu přijít na to, jak odstranit .php rozšíření. URL vypadá takto teď: http://mydomain.com/page.php/foo/123/bar/456

function decode_URL_parameters() {
   $path = @$_SERVER['PATH_INFO'];
   $url_array=explode('/',$path);

   array_shift($url_array);

   while ($url_array) {
      $_GET[$url_array[0]] = $url_array[1];
      array_shift($url_array);
      array_shift($url_array);
   }
}

Nějaké nápady?

/ Tobias

Položena 26/08/2009 v 22:47
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
5

Pokud podávat přes Apache, budete chtít podívat na mod_rewrite.

Používáte mod_rewrite, můžete upravit, jak jsou URL mapovány do konkrétních koncových bodech vaší aplikace. Pro vaši Například, budete chtít něco takového:

RewriteEngine on 
RewriteRule ^/?page/(.*)$ page.php/$1 [L]

Tato stránka má nějaké další jednoduché příklady.

Odpovězeno 26/08/2009 v 23:02
zdroj uživatelem

hlasů
3

Pravděpodobně jste nastavili svůj webový server nechat php zvládnout všechny požadavky na soubory, které mají příponu .php. Předpokládejme, že je to apache. Pak je tu něco podobného

AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt

nebo

<FilesMatch \.php$>
  SetHandler application/x-httpd-php
</FilesMatch>

v jednom z konfiguračních souborů. Druhý říká Apache, že všechny soubory, které odpovídají maska php $ by měly být řešeny pomocí modulu / psovoda, který registroval pro aplikaci typu / x-httpd-php (PHP).
Ale nemusíte se omezit na .php soubory. Můžete použít libovolný soubor masku, kterou chcete. Nebo další směrnice, jako například <Directory> .
Pokud jsou všechny soubory v určitém adresáři (a možná jeho podadresáře) jsou PHP skripty dokonce můžete dát souboru .htaccess v tomto adresáři s

ForceType application/x-httpd-php

a apache bude považovat jakýkoli soubor jako PHP skript. ForceType přepíše všechny předchozí nastavení ovladačů.

Odpovězeno 26/08/2009 v 23:18
zdroj uživatelem

hlasů
2

Pod Apache, dát souboru .htaccess v adresáři, který obsahuje soubor page.php.

V případě, že page.php souborů obsahuje v kořenovém r (tj /page.php), pak stačí přidat to do .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /page.php?/$1 [L]

Pokud se však soubory page.php obsahuje v řekněme /a_folder/another_folder/page.php

Pak budete muset dát do vašeho .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /a_folder/another_folder/page.php?/$1 [L]

A tak dále.

Co to znamená, že jednoduše odstraní page.php z adresy URL. Takže ve vašem případě:

Namísto: http://mydomain.com/page.php/foo/123/bar/456 můžete použít: HTP: //mydomain.com/foo/123/bar/456

Bavit.

Odpovězeno 26/08/2009 v 23:26
zdroj uživatelem

hlasů
0

děkuji za všechny odpovědi, ale pokud mohu použít mod_rewrite pak jsem HAFT, aby nová pravidla (a mnoho) pokaždé jsem se vytvořit novou stránku. A je tu spousta z nich :)

Možná kdybych přesměrovat všechny adresy URL do mého index.php s .htaccess a pak opravit můj URL tam, stejně jako wordpress:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Odpovězeno 27/08/2009 v 00:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more