Izveidojiet WEB SHOP, izmantojot PHP (MySQL, MVC, Twig) * e-komercijas vietne *

Vai ir iespējams izdzēst 2 parametru URL URL un vienkārši parādīt numuru. Pašlaik man ir šāds URL:

http://localhost/photo_gallery/public/product_configurator.html?prometheus_id=10082&id=73 

Nepieciešamais URL:

http://localhost/photo_gallery/public/product_configurator.html/10082&73 

.htaccess

RewriteEngine on RewriteRule ^(.*).html $1.php RewriteRule ^product_configurator.php/(\d+)$ product_configurator.php?prometheus_id=$1&id=$2 [NC,L] 

Vai to ir iespējams izdarīt?

  • Vai jūs jau pārrakstāt URL, no kura mainīt URL paplašinājumu? .html uz .php? (Vai jūs to darāt daudziem dažādiem vietrāžiem URL?) Tātad "faktiskais" URL / faila nosaukums patiešām ir product_configurator.php? Un, lūdzu, paskaidrojiet, kur jūsu .htaccess fails atrodas? Pēc jūsu direktīvu izskata tas atrodas /photo_gallery/public/ apakšdirektorijs?
  • @ MrWhite Paldies par atbildi .1. Es mainu php uz html. Vai jūs to darāt daudziem dažādiem vietrāžiem URL? - visiem failiem ar php 2. product_configurator.php - jā, tas ir fails. 3. atrodas - publiski, mapē photo_gallery - nav nekā, nav faila, tikai publiskās un privātās apakšmapes.
  • @ MrWhite Šis darbs ir paredzēts man. RewriteRule ^ show.php / (\ d +) $ show.php? Id = $ 1 [NC, L], bet tikai viens id localhost / photo_gallery / public / show.html / 73
  • @ MrWhite Es nezinu, kā noņemt 2 ID.

Es pieņemu, ka (skatoties uz jūsu direktīvām), ka jūsu .htaccess fails atrodas /photo_gallery/public/.htaccess.

RewriteRule ^product_configurator.php/(\d+)$ product_configurator.php?prometheus_id=$1&id=$2 [NC,L] 

Tas ir tuvu, lai gan jums ir tikai viens notveršanas apakštēls (ti. (\d+)), tomēr jums ir divas atsauces (ti. $1 un $2) iekš aizstāšana virkne. Jūs arī atbilstat tikai cipariem (\d), turpretī modelis, kuru vēlaties saskaņot, satur & - bez cipariem. Tātad iepriekšminētais vienkārši nesakritīs.

Jūs esat arī ieviesis a .php paplašinājums, turpretī jūsu ievietotie vietrāžu URL piemēri sastāv no .html. Es pieņemu, ka jūs jau pārrakstāt .html uz .php (kā iesaka jūsu direktīvas). Tomēr jums tas jādara tieši ar vienu direktīvu.

Pārrakstiet, lai mainītu paplašinājumu no .html uz .php (ti. RewriteRule ^(.*).html $1.php) arī pārrakstīs informāciju, kuru mēģināt saskaņot, jo tā ir iekļauta URL ceļā.

Tā vietā izmēģiniet šādas darbības:

RewriteEngine On # Rewrite 'product_configurator.html/10082&73' RewriteRule ^(product_configurator)\.html/(\d+)&(\d+)$ $1.php?prometheus_id=$2&id=$3 [L] 

Mēs tveram product_configurator virkne no pieprasījuma (uz $1 aizmugures atsauce), lai saglabātu atkārtošanos aizstāšana virkne. $2 un $3 pēc tam attēlojiet vērtības pirms un pēc & URL ceļā.

Esmu noņēmis NC karodziņu, lai novērstu iespējamu “dublēta satura” problēmu. Ja vien jums īpaši nav nepieciešama mazo un mazo burtu atšķirība, NC jāizvairās no karoga.

Un tad...

# Rewrite other '.html' requests to '.php' RewriteRule (.+)\.html$ $1.php [L] 
  • 1 Liels paldies.

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?