Frage

Ich möchte alle URLs umleiten, die "_js", "_ css", "_img" usw. nicht zu meinem Dispatch Skript. Irgendwie funktioniert es nicht. Zum Beispiel werden alle Dateien in meinem / _js / Ordner sind unaccessible (Bedeutung: Sie wohnen in diesem Ordner, anstatt sich auf die physischen Dateien auf index.php gesendet)

.

Hier ist meine .htaccess:

IndexIgnore *
Options +FollowSymLinks
RewriteEngine on

# if the following conditions are met, SKIP the rewriteRules.

RewriteCond %{REQUEST_URI} ^/(_admin/¦_css/¦_js/¦_img/)
RewriteRule . - [S=9]


# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://%{HTTP_HOST}/$1/?%{QUERY_STRING} [NC,R,L]

# SIX PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5&title=$6&%{QUERY_STRING} [NC,L]

# FIVE  PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5&%{QUERY_STRING} [NC,L]

# FOUR PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&%{QUERY_STRING} [NC,L]

# THREE PARAMS : projects/touch/texts/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&%{QUERY_STRING} [NC,L]

# TWO PARAMS: downloads
RewriteRule ^downloads/([^/]+)/$ index.php?section=downloads&item=$1&%{QUERY_STRING}  [NC,L]

# TWO PARAMS:
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&%{QUERY_STRING} [NC,L]

# TAG URL : index.php?tag=space%2C+navigable+music#5
RewriteRule ^tag/([a-z0-9_\-]+)/$ index.php?tag=$1&%{QUERY_STRING} [NC,L]
# ONE PARAM
RewriteRule ^([a-z0-9_\-]+)/$ index.php?section=$1&%{QUERY_STRING} [NC,L]

Edit:

Beachten Sie meine Ordnerstruktur. Könnte es das Problem Quelle sein?

Ich habe eine „v1“ und „v2“ Ordnerstruktur. Diese .htaccess sitzt im „v2“ -Ordner. eine Ebene über, ich habe eine .htaccess, die alle Anforderungen an „v2“ umleitet.

root 
  L.htaccess << dispatch between v1 and v2 folders 
  L v1 L v2 L.htaccess << the .htaccess code posted above 
  L _admin L all my website files & folders
War es hilfreich?

Lösung

Sie verwenden das falsche Zeichen, ¦ ( gebrochener bar , U + 00A6) statt | ( vertikale Linie , U + 007C), und falsche Muster für REQUEST_URI.

RewriteCond %{REQUEST_URI} ^/v2/(_admin/|_css/|_js/|_img/)
RewriteRule . - [S=9]

oder für die .htaccess-Datei in Ihrem v2 Verzeichnis nur:

RewriteRule ^_(admin|css|js|img)/ - [S=9]

Andere Tipps

Hier sind einige zufällige Fehlerbehebungen, die das eigentliche Problem nicht beheben können oder nicht, die (siehe mein Kommentar) nicht ganz klar ist und die geholfen werden könnte, wenn Sie den Server steuern und die RewriteLog ermöglichen, über:

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

, aber Sie müssen diese Konfiguration in Hauptserver setzen.

Wie gesagt, zwei Hauptprobleme:

  • Mangel an Verwendung von QSA-Flag (nicht wirklich relevant)
  • Die übermäßige Gebrauch von Schrägstrichen (wahrscheinlich relevant in dem eigentlichen Problem, sieht neue Version der Skipping-Regel)

Hier geht die geänderte Datei

IndexIgnore *
Options +FollowSymLinks
RewriteEngine on

# if the following conditions are met, SKIP the rewriteRules.

RewriteCond %{REQUEST_URI} ^(_admin¦_css¦_js¦_img)
RewriteRule . - [L]


# Externally redirect to add missing trailing slash. Not really needed, AFAICS
# RewriteRule ^(([^/]+/)*[^/]+)$ http://%{HTTP_HOST}/$1/ [NC,R,L,QSA]

# SIX PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5&title=$6 [NC,L,QSA]

# FIVE  PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5 [NC,L,QSA]

# FOUR PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4 [NC,L,QSA]

# THREE PARAMS : projects/touch/texts/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3 [NC,L,QSA]

# TWO PARAMS: downloads
RewriteRule ^downloads/([^/]+)/?$ index.php?section=downloads&item=$1  [NC,L,QSA]

# TWO PARAMS:
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2 [NC,L,QSA]

# TAG URL : index.php?tag=space%2C+navigable+music#5
RewriteRule ^tag/([^/]+)/?$ index.php?tag=$1 [NC,L,QSA]
# ONE PARAM
RewriteRule ^([^/]+)/?$ index.php?section=$1 [NC,L,QSA]

EDIT: Auch angesichts der Ordnerstruktur, versuchen Sie, die v2 .htaccess am Anfang Folgendes hinzufügen:

RewriteBase /

Sie haben noch nicht erklärt, wenn Sie können oder nicht RewriteLog verwenden können (ich nehme an, Sie können nicht)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top