fragen stichworte

Hinzufügen einer Regel zu meiner Htaccess-Subdomain-Umschreibung

Ich hatte kürzlich Hilfe von icyrock.com mit einem htaccess-Umschreibvorgang, der alle Unterdomänenanfragen an domain.com/apps

sendet

Den Thread finden Sie hier und der Code ist hier:

RewriteBase/
RewriteEngine On

#### URL Rewrite Handler for Subdomains (by Randall Krause) ####

RewriteCond %{ENV:REDIRECT_SUBDOMAIN} =""
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.domain\.com\.?(:80)?$ [NC]
RewriteCond %{DOCUMENT_ROOT}/apps/%1 -d
RewriteRule ^(.*) apps/%1/$1 [E=SUBDOMAIN:%1,L]
RewriteRule ^ - [E=SUBDOMAIN:%{ENV:REDIRECT_SUBDOMAIN},L]

Wie gesagt, das funktioniert wirklich gut, aber ich muss noch zwei weitere Regeln hinzufügen, die ich bei der Integration nicht problemlos finden kann, ohne mit dem obigen Code in Konflikt zu geraten.

  1. Für alle Anfragen, die NICHT für Subdomains sind, benötige ich die URL der Hauptseite (http://domain.com), um sie in http://www.domain.com
  2. zu schreiben
  3. Für alle Anfragen, die NICHT für die Subdomains gelten, muss ich die URLs erneut schreiben, um eine index.php aus der URL zu entfernen.

Der Code dafür lautet:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Wenn Sie dies in seiner aktuellen Form hinzufügen, BEVOR die Umschreibregel für die Unterdomäne die Regel verletzt, wird sie verletzt.

Die einzige Lösung, die ich gefunden habe, besteht darin, explizit zu definieren, welche Dateien durch die obige Regel nicht abgedeckt werden sollen, indem etwa Folgendes ausgeführt wird:

RewriteCond $1 !^(index\.php|images|robots\.txt)

Hat jemand Ideen?

Danke,

Tim

antworten

Ich habe es nicht getestet, aber versuchen Sie etwas in dieser Richtung (möglicherweise müssen Sie es anpassen):

RewriteCond %{HTTP_HOST} ^domain\\.com(:80)?$ [NC]
RewriteRule ^(.*)(?:index.php)?$ http://www.domain.com/$1 [R=permanent,L]

Setzen Sie den Code nach RewriteEngine On (d. h. vor Ihrem ersten RewriteCond). Beachten Sie, dass alle index.php Endungen entfernt werden (d. H. domain.com/a/b/c/index.php wird zu www.domain.com/a/b/c/. Von hier aus genommen:

Ich schlage vor, Sie lesen etwas über mod_rewrite, zum Beispiel:

Wenn Sie es jeden zweiten Tag brauchen - zahlt sich aus ... :)