it-swarm.com.de

.htaccess & Wordpress: Ordner von RewriteRule ausschließen

Ich habe diese .htaccess-Datei in Wordpress. Es befindet sich unter/public_html/(Webstammverzeichnis). Ich muss einen Ordner (csNewsAd) von der Rewrite-Engine ausschließen. Ich habe dies aus einer anderen ähnlichen Frage hier bei SO ausprobiert, aber überhaupt nicht funktioniert.

AddHandler x-httpd-php5 .php
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/csNewsAd($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Irgendwelche Vorschläge?

Weitere Daten

In/csNewsAd gibt es einen weiteren .htaccess zum Passwortschutz:


AuthName "Clasificados"
AuthType "basic"
AuthUserFile /home/ig000192/public_html/csNewsAd/.passwd
Require valid-user

RewriteCond %{REQUEST_URI} !^/(csNewsAd|csNewsAd/.*)$ 

anstatt 

RewriteRule ^/csNewsAd($|/) - [L] 
42
GmonC

Fügen Sie die folgende Zeile in die .htaccess-Datei im Stammverzeichnis ein.

ErrorDocument 401 default

Hatte das gleiche Problem und das hat für mich funktioniert. Es ist nicht das Problem, dass die Weiterleitungen nicht funktionieren. Das Problem ist, dass der Fehler 401 (Authorization Required) nicht definiert ist, sodass das "Popup" nicht angezeigt wird.

18
Jory Hogeveen

Hatte das gleiche Problem und fand die Antwort auf mein Problem hier: http://kb.siteground.com/article/How_to_exclude_a_folder_from_Wordpress_permalinks.html

--Von der Website

Um die Unterordner von den WordPress-Umschreiberegeln auszuschließen, müssen Sie die .htaccess-Datei bearbeiten und die unten stehende Fettzeile ändern:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . /index.php [L] # Original line
RewriteRule ./ /index.php [L] # New line
</IfModule>
# END WordPress
5
user1389907

.htaccess wirkt sich auf alle darunter liegenden Verzeichnisse aus. Wenn Sie also in csNewsAd einen .htaccess mit den gewünschten Umschreibungsanweisungen einfügen, hat diese Vorrang vor der Stammdatei.

3
markratledge

Wenn Sie in einer .htaccess-Datei mod_rewrite verwenden, müssen Sie lediglich den URL-Pfad ohne das lokale Pfadpräfix in Ihren Mustern angeben. In Ihrem Fall ohne den führenden / (wie Sie sich im Dokumentstamm / befinden):

RewriteRule ^csNewsAd($|/) - [L]
2
Gumbo

Hier ist meine Lösung in Bezug auf die GoDaddy WordPress-Site. Meine Installation hatte eine web.config-Datei, so dass ich eine Umschreiberegel hinzugefügt habe. Ich wollte einen/ApiData-Pfad, in dem ich eine MVC.net-Anwendung (virtuelles Verzeichnis) für AJAX-Aufrufe ausführen kann. 

<system.webServer>
    <!-- ... -->
    <rewrite>
        <rules>
            <rule name="apidata" stopProcessing="true">
                <match url="apidata"/>
            </rule>
            <rule name="wordpress" patternSyntax="Wildcard">
                <match url="*"/>
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
                </conditions>
                <action type="Rewrite" url="index.php"/>
            </rule>

        </rules>
    </rewrite>
</system.webServer>
1
Pete

Ich habe GoDaddy-Hosting und diese Ausgabe hat mich getötet. Ich hatte immer wieder dieselben Probleme mit widersprüchlichen .htaccess-Optionen in public_html und meinem kennwortgeschützten Unterverzeichnis.

Am Ende kaufte ich ein anderes Konto, weil ich ungefähr eine Million verschiedene Änderungen an meiner .htaccess-Datei vorgenommen hatte und dieses Problem nicht behoben wurde. Ich teile jetzt mein Setup und meine Lösung, nur aus Gründen der Vollständigkeit und Klarheit. (Nur damit Sie wissen, der Account war es trotzdem wert, also keine große Sache.)

Wenn es wie eine Kombination der Antworten anderer aussieht, liegt das daran, dass es so ist. Es hat ALLE zur Arbeit gebraucht.

Verzeichnisaufbau:

-otherfiles
---public_html
---.htaccess
-----subfolder
---.htaccess

Der Unterordner .htaccess hat ein Kennwort für die Schutzfunktion, also ähnlich:

AuthType Basic
AuthName "Attendance"
AuthUserFile "/home/user/.htpasswds/public_html/attendance/passwd"
require valid-user

Das public_html .htaccess hatte ursprünglich das, und es funktionierte nicht (da es ALLES verschluckt und umgeleitet hat, sodass FatFreeFramework oder CodeIgniter damit umgehen):

RewriteEngine On
RewriteCond $1 !^(index.php|resources|subfolder|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

Um dieses Problem zu beheben, fügte ich meiner Datei public_html .htaccess zwei Zeilen hinzu. Und so ahnen Sie nicht wo, ich zeige die ganze Datei noch einmal:

RewriteEngine On
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/(subfolder|subfolder/.*)$
ErrorDocument 401 default
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

Ich habe zuerst mit Rails angefangen. An der Oberseite der Rails .htaccess befinden sich die folgenden zwei Linien.

# RewriteCond %{REQUEST_URI} ^/notrails.*
# RewriteRule .* – [L]

Als ich schließlich ihrem Beispiel folgte, hat es funktioniert.

Ich wollte Bilder, Javascripts, Stylesheets, css, images-global, js-global (etc) ausschließen.

RewriteCond %{REQUEST_URI} ^(images|javascripts|stylesheets|css|images-globa|js-global|js).*
RewriteRule .* – [L]

Und es funktionierte so, wie ich es brauchte.

Wir werden nicht darüber sprechen, wie es ist, dass ich so viele verschiedene Javascript-, Stylesheet- und Bilderordner habe ...

Dies macht meine "Fehler" -Datei jedoch weniger schmerzhaft. Wenn jemand eine Bilddatei hinzufügt, die nicht vorhanden ist, muss sie von meinem Versand nicht verarbeitet werden.

1
brad tittle

Dies ist das # 1-Ergebnis von Google und die falsche Antwort.

Die richtige Antwort ist das Hinzufügen dieser vorher der Wordpress-Anweisungen.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
</IfModule>
0
Jeff Karney

Ich hatte ein ähnliches Problem für zwei meiner Standorte. Die Kommentare, die ich hier gelesen habe, funktionierten nicht für mich, aber ich bekam endlich diesen Code zum Laufen:

<IfModule mod_rewrite.c>
  RewriteEngine on

  # stuff to let through (ignore)
  RewriteCond %{REQUEST_URI} "/folder1/" 
  RewriteRule (.*) $1 [L]

erhalten von https://www.drupal.org/node/30334

0
Bible Arena

Sie sollten dies versuchen

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^/(gadget)/(.*) /gadget/$2 [R]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
0
Preetam Purbia

Ich weiß, es ist ein alter Beitrag, aber er hat mir trotzdem geholfen. Ich hatte das zusätzliche Problem mehrerer Blöcke von RewriteRules:

##
## White listed folders
##
RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !/.well-known/*
RewriteCond %{REQUEST_FILENAME} !/storage/app/uploads/.*
RewriteCond %{REQUEST_FILENAME} !/storage/app/media/.*
...
RewriteCond %{REQUEST_FILENAME} !/modules/.*/(assets|resources)/.*
RewriteRule !^index.php index.php [L,NC]

##
## Block all PHP files, except index
##
RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule !^index.php index.php [L,NC]

##
## Standard routes
##
RewriteCond %{REQUEST_URI} !^/(phplist|phplist/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

und musste vor jedem Block meine RewriteCond hinzufügen ...

0
Johanness

sie könnten so etwas hinzufügen:

RewriteCond %{REQUEST_URI} !^/csNewsAd 

dies sollte jedoch nicht erforderlich sein, denn wenn es sich bei csNewsAd tatsächlich um ein Verzeichnis (Ordner) handelt, sollte es wegen nicht in erster Linie neu geschrieben werden 

RewriteCond %{REQUEST_FILENAME} !-d

sind Sie sicher, dass zwischen Ihnen und dem Ordner, den Rechten oder (tatsächlich) einem anderen .htaccess nichts anderes ist?

0
futtta

Es ist erwähnenswert, dass es wichtig ist, wohin diese Linie im Fluss des .htaccess geht.

Siehe hier: http://tanyanam.com/technology/wordpress-exclude-directory-von-url-rewrite-with-htaccess - Die Zeile muss vor den WordPress-Zeilen stehen, danach funktioniert sie nicht .

Rauben

0
rob_was_taken

Ich bin mir ziemlich sicher, dass Sie dies bereits ausgeschlossen haben, aber seit ich hierher gekommen bin, um genau dasselbe Problem zu machen, wollte ich es mit Ihnen teilen: In meinem Fall lag das Problem tatsächlich in den Erlaubnissen von - anscheinend nicht in der Lage zu sein In dem Ordner wurde der Ausschluss ignoriert.

0
TheLegs