Derrick Rose tekee vaikutuksen ensimmäisessä pelissä Cleveland Cavaliersin kanssa

Minulla on .htaccess-tiedosto, jonka säännöt ovat seuraavat:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /apples/* RewriteRule . /page/faqs.php?cat=apples&question=%{REQUEST_URI} RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /bananas/* RewriteRule . /page/faqs.php?cat=bananas&question=%{REQUEST_URI} 

Haluan sen toimivan näin:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} /(apples|bananas)/* RewriteRule . /page/faqs.php?cat=$1&question=%{REQUEST_URI} 

$ 1 on vastaava arvo (omenat tai banaanit). Kuinka voin siirtää jotain tällaista ehdosta sääntöön?

  • 1 Miksei testaa omenoita | banaaneja URI: ssä RewriteRule-vaiheessa?
RewriteCond %{REQUEST_URI} /(apples|bananas)/* RewriteRule . /page/faqs.php?cat=$1&question=%{REQUEST_URI} 

Melkein. Mutta sinun täytyy käyttää %1 sijasta $1 taaksepäin viimeisen ottelun ensimmäiselle kaapatulle ryhmälle CondPattern (RewriteCond kuvio). $1 on taaksepäin ensimmäiselle kaapatulle ryhmälle RewriteRule kuvio (mutta sinulla ei ole yhtään, niin $1 olisi aina tyhjä tässä esimerkissä).

Kuten @PatrickMevzek ehdotti kommenteissa, sinun pitäisi kuitenkin suorittaa tämä tarkistus URL-osoitteessa RewriteRule kuvio sen sijaan (tehokkaampi ja yksi vähemmän direktiivi). Tässä tapauksessa käytät $1 kuten teet. Esimerkiksi:

RewriteRule ^(apples|bananas)/ /page/faqs.php?cat=$1&question=%{REQUEST_URI} [L] 

Sinulla ei ollut ankkuri alkuperäisessä CondPattern (/(apples|bananas)/*), joten tämä olisi sopinut mihin tahansa URL-osoitteen sisällä. Oletan, että tämän pitäisi olla URL-polun alussa? Myös perässä * ei tee sitä mitä luulet. * regex-puheessa toistaa edellisen merkin vähintään 0 kertaa (se ei ole jokerimerkki). Joten tämä olisi palvellut vain vastaamaan useita kauttaviivoja (mikä epäilen aikoo olla)!

Olen myös lisännyt L (last) lippu. Oletan, ettet halua muita uudelleenkirjoituksia tämän jälkeen? Tällä ei ole väliä, jos tämä on ainoa mod_rewrite-direktiivi tiedostossa, mutta jos lisäät myöhemmin direktiivejä, niin L voidaan tarvita.

  • 1 Kiitos paljon! Olet tehnyt elämästäni paljon helpompaa tänään!

työskennellyt sinulle: Charles Robertson | Haluatko yhteyttä?