Welche htaccess-Regeln werden das Unterverzeichnis, das die Site bedient, vom URI (404, falls enthalten) und internen Links ENTFERNT?

391
user163831

** SIEHE UPDATE UNTEN *****

Meine primäre Domain-Site soll von einem Unterverzeichnis auf meinem Server aus bedient werden, das den gleichen Namen wie die Domain hat, so dass es wahrscheinlich verwirrend wird, diesen chaotischen Block meiner Webroot-Datei .htaccess zu lesen:

<IfModule mod_rewrite.c> RewriteEngine on RewriteBase /  # remove www RewriteCond % ^www\.(.+)$ RewriteRule ^.*$ %1 [NC,QSA,R=301]  #RewriteCond % . [OR] RewriteCond % ^(www\.)?my\-web\.agency$ RewriteRule ^my-web.agency/ - [L,R=404] RewriteRule !^my-web.agency/ my-web.agency/% [NC,QSA] </IfModule> 

Ich habe gerade so lange daran gearbeitet, die Regeln geändert und die Struktur so strukturiert, dass diese Unzulänglichkeit genau das ist, was ich derzeit habe.

Das www. STAYS, so dass dieses Stück zu entfernen völlig unwirksam ist.

Die! ^ My-web.agency / rule-Regel dient der Website tatsächlich als effektiv. Mein nachfolgender Versuch, eine 404 zu rendern, wenn das Unterverzeichnis in der URI FAILS enthalten ist.

Bitte erklären Sie mir, wie Sie das alles gerade machen können. Ich versuche, die Dokumente zu lesen und zu lernen und es herauszufinden, aber irgendwie kann ich es einfach nicht und ich habe schon viel Zeit darauf investiert. Ich muss wirklich aufhören, bitte helfen, ich bin immer dankbar dafür lernen und beachten Sie sorgfältig. Vielen Dank.

***** UPDATE: ** Jetzt habe ich

# remove www, externally for consistent domains (successful) RewriteCond % ^www\.(.+)$ RewriteRule .* http://[[percent]]1/$0 [NS,L,R=301,QSA]  RewriteCond % ^(www\.)?my\-web\.agency$ RewriteCond % ^my-web.agency RewriteRule ^(.*)$ - [R=404,L,NC]  RewriteCond % ^(www\.)?my\-web\.agency$ RewriteCond % !^my-web.agency RewriteRule ^(.*)$ /my-web.agency/$1 [L,NC,QSA] 

Das macht das WWW effektiv. verschwinden, wenn versucht wird. Aber alle INTERNAL LINKS ENTHALTEN NOCH das Unterverzeichnis, das versteckt werden soll (zB interne Links lesen " http://my-web.agency/my-web.agency/somepage ") und den Zugriff auf Seiten mit dem Unterverzeichnis im URI funktioniert immer noch; Ich möchte lieber eine 404 zurückgeben.

DocumentRoot oder RewriteBase scheinen logisch mögliche Lösungen zu sein, wenn ich nur die richtige Implementierung herausfinden könnte. (Das [[percent]]Vorgehen http: // in 1st RewriteRule besteht darin, es durch den Editor zuzulassen, ohne einen Fehler zu melden; es wird lediglich angegeben %.)

0
Msgstr "Meine primäre Domain - Site soll von einem Unterverzeichnis auf meinem Server aus bedient werden, das denselben Namen wie die Domain hat". Warum also nicht DocumentRoot so anpassen, dass es übereinstimmt? grawity vor 6 Jahren 0
Weil ich eine andere Domain hinzufügen werde? user163831 vor 6 Jahren 0
Jeder VirtualHost-Block und damit jede Domäne verfügt jedoch über eine eigene DocumentRoot-Einstellung. grawity vor 6 Jahren 0

0 Antworten auf die Frage