it-swarm-eu.dev

Odebrání rozšíření skriptu s přepsáním URL na Apache

Vzhledem k (mírně teoretickému) rozložení fyzického disku:

\products\fotoaparáty\50d.jpg 
\products\fotoaparáty\20d.jpg 
\products\lenses\18-55.jpg 
\products\lenses\28-135.jpg 
\Products.php 

Momentálně mám adresy URL formuláře:

/products.php /
/ products.php/kamery /
/ products.php/kamery/50d 

Pomocí products.php pomocí PATH_INFO rozhodnete, co zobrazit.

Snažím se přepsat adresu URL, abych odstranil .php, ale přesto umožňuji načíst statické zdroje?

2
Rowland Shaw

Ukázalo se, že to funguje a stále umožňuje pracovat uvnitř zdrojů.

RewriteRule ^products([^\.]+)$ products.php$1
0
Rowland Shaw

Za prvé musí být všechny tyto zpětné lomítka lomítka. \ se používá k „úniku“ speciálních znaků, nikoli k oddělení složek.

Přepisování products.php na products nebude fungovat, pokud již máte složku produktů. Navrhoval bych přesunout všechny obrázky do jiného adresáře, například /images/cameras/50d.jpg. Pak to můžete udělat:

RewriteRule ^products products.php

S tím budete muset analyzovat požadovanou URL v PHP, abyste našli proměnné. Můžete také použít toto:

RewriteRule ^products/([^/]+) products.php?cat=$1
RewriteRule ^products/([^/]+)/([^/]+) products.php?cat=$1&prod=$2

Nyní ve skriptu PHP máte automaticky požadované proměnné pomocí $_GET['cat'] a $_GET['prod'].

ÚPRAVA: ve skutečnosti máte pravdu, je je možné mít obojí, pokud jsou všechny obrázky omezeny na konkrétní rozšíření. Myslím, že to bude fungovat:

RewriteRule ^products/(.+).jpg products/$1.jpg [L]
RewriteRule ^products/([^/]+) products.php?cat=$1
RewriteRule ^products/([^/]+)/([^/]+) products.php?cat=$1&prod=$2
2
DisgruntledGoat