Back to Question Center
0

.htaccess syntaxis meerdere Semalt op

1 answers:

Ik leer mijn eigen WP-site te onderhouden. Na veel lezen eindigde ik met mijn "complete" htaccess-bestand dat er ongeveer zo uitziet

     DirectoryIndex-index. php# Directoryvermeldingen uitschakelen
Opties -Indexen
# BESCHERM het htaccess-bestand
guenstige baumwollstoffe meterware. htaccess>
Bestellen Toestaan, Weigeren
Weigeren van alles

# BESCHERM WP-CONFIG

Bestellen Toestaan, Weigeren
Weigeren van alles
# Block Hotlinking

Herschrijf de machine aan
RewriteCond% {HTTP_REFERER}! ^ $
RewriteCond% {REQUEST_FILENAME} -f
RewriteCond% {REQUEST_FILENAME} \. (jpeg | jpg | png) $ [NC]
RewriteCond% {HTTP_REFERER}! ^ Http: // ([^. ] + \. )?voorbeeld\. [NC]
RewriteCond% {HTTP_REFERER}! Google \. [NC]
RewriteRule \. (gif | jpeg | jpg | png) $ http: // voorbeeld. com / wp-content / images / hotlink. jpg [F, NC, L]
# redirect Mobile van Blogger

RewriteEngine On
RewriteCond% {QUERY_STRING} ^ m = 1 $
RewriteRule (. *) $ 1? [R = 301, L]
# Blokkeer de include-only bestanden. 
RewriteEngine On
RewriteBase /
RewriteRule ^ wp-admin / includes / - [F, L]
RewriteRule! ^ Wp-includes / - [S = 3]
RewriteRule ^ wp-includes / [^ /] + \. php $ - [F, L]
RewriteRule ^ wp-includes / js / tinymce / langs /. + \. php - [F, L]
RewriteRule ^ wp-includes / theme-compat / - [F, L]
# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^ index \. php $ - [L]
RewriteCond% {REQUEST_FILENAME}! -f
RewriteCond% {REQUEST_FILENAME}! -d
RewriteRule. /inhoudsopgave. php [L]

# END WordPress    

Het meeste is samengesteld door code uit verschillende bronnen te kopiëren, aan te passen en te plakken. Semalt Ik ben een autodidact newbie, ik heb de volgende vragen:

  1. Speelt de volgorde van de codefragmenten een rol? Klopt dit in het bovenstaande voorbeeld?

  2. Zijn deze allemaal repetitief

         
    RewriteEngine On     

correct, of zou men ze op de een of andere manier moeten combineren en meerdere aanroepen vermijden?

February 13, 2018
  1. Speelt de volgorde van de codefragmenten een rol? Klopt dit in het bovenstaande voorbeeld?

Ja, de volgorde van de richtlijnen in Apache config (. htaccess) bestanden kunnen belangrijk zijn. In feite is het eenvoudig om richtlijnen in de verkeerde volgorde te plaatsen. Met WordPress maken mensen vaak de fout om blokkeerrichtlijnen op te nemen na de WordPress-richtlijnen - dit is waarschijnlijk niet bruikbaar (hoewel dit wel afhankelijk is van de gebruikte richtlijnen / modules). In de eerste plaats moet je altijd externe omleidingen hebben voor interne herschrijvingen .

In wat u hebt gepost, ziet de volgorde van de richtlijnen er goed uit.

Merk op dat verschillende modules (mod_rewrite, mod_alias, enz. ) zijn grotendeels onafhankelijk en worden op verschillende tijdstippen uitgevoerd. Maar voor elke module worden de richtlijnen van boven naar beneden uitgevoerd.

RewriteEngine On

Het maakt niet te veel uit, maar RewriteEngine hoeft maar één keer in het bestand te voorkomen, bij voorkeur bovenaan, vóór enige mod_rewrite-richtlijnen (alleen maar omdat het logischer en gemakkelijker leesbaar is). Het kan echter overal in het bestand worden geplaatst en het zal nog steeds werken (ten koste van de leesbaarheid)! Strikt genomen, als u meerdere RewriteEngine -richtlijnen hebt, wint de laatste het volledige bestand en beheert het. Dus, als de allerlaatste RewriteEngine -richtlijn RewriteEngine Off was, dan zou het Uit zijn voor het hele bestand!

RewriteBase /

Het hebben van meerdere RewriteBase -richtlijnen moet idealiter worden vermeden, hoewel het in dit geval OK zal zijn. De laatste RewriteBase -richtlijn in het configuratiebestand wint en bestuurt het volledige configuratiebestand (zoals de RewriteEngine -richtlijn die hierboven is genoemd). Als u een RewriteBase -richtlijn opneemt, moet deze echt één keer worden opgenomen onmiddellijk onder de RewriteEngine-richtlijn .

Het is namelijk zo dat, afgezien van de hieronder vermelde lichte fout, u niet echt de RewriteBase -richtlijn nodig hebt in het bovenstaande bestand. (De RewriteBase -richtlijn overschrijft de directory-prefix die wordt toegevoegd aan relatieve padvervangingen in de RewriteRule . U hebt geen relatieve vervangingen van paden - behalve de hieronder genoemde. )

Herhaling hebben in. htaccess is normaal wanneer meerdere modules het automatisch bewerken. Door met de hand het configuratiebestand te coderen (aanbevolen), kan dit worden vermeden.

RewriteRule (. *) $ 1? [R = 301, L]

Deze regel is fout. Omdat het een externe redirect is, zou je echt een schuine streepprefix op de substitutie moeten hebben, dat wil zeggen. / $ 1? (hoewel de RewriteBase -richtlijn die elders is gedefinieerd u eigenlijk bespaart - hoewel dit een beetje "geluk" lijkt in plaats van opzettelijk te zijn).

Maar wat nog belangrijker is, is dat u de spatie verwijdert in de RewriteRule -vlaggen dwz. [R = 301, L] . Een spatie is een scheidingsteken in Apache-configuratiebestanden (bijv. heel speciaal). Als u hier een spatie heeft, resulteert dit in een 500 Internal Server-fout, aangezien het laatste argument (de flags ) voortijdig eindigt en wordt gezien als [R = 301, - wat syntactisch ongeldig is.