2009-04-30 16 views
4

Ich möchte nur eine schnelle htaccess-Umleitung bekommen. dh:htaccess (keine Umleitung) [REWRITEURL] (Ordner zu index.php)

domain.com/subfolderGreen -> domain.com/index.php?folder=subfolderGreen

(beachten Sie, dass die subfolderGreen tatsächlich existiert)

Ich habe versucht, aber konnte es nicht Holen Sie sich die Regex benötigt.

danke. a.

ZUSÄTZLICH:

Sorry, möchte ich dies für alle Unterordner arbeiten, nicht nur "subfolderGreen" Ich verwende

RewriteRule ^/([^ /] +)/$/index? .php? Ordner = $ 1 [L]

aber es funktioniert nicht. irgendwelche Hinweise?

+0

Sie wollen keine Neuschreibung, richtig? –

+0

Ja, er versucht, eine Neufassung zu schreiben, keine Umleitung 301 –

Antwort

2

Ich würde denken, dass Ihr Beispiel würde eine Endlosschleife verursachen, da /index.php übereinstimmt, was Sie tun. Versuchen Sie diese:

RewriteRule ^([A-Za-z0-9]+)/?$ /index.php?folder=$1 [L] 

Wenn Sie möchten, dass es für alle Verzeichnisse funktioniert, die vorhanden sind, wird dies wahrscheinlich auch funktionieren.

RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.+)/?$ /index.php?folder=$1 [L] 
+0

das funktioniert super. lass es mich weiter betatschen. Danke –

+0

Funktioniert nicht für website.com/my-directory/ wird es? –

+0

@ d03boy fügen Sie einfach \ - als zusätzliches Zeichen nach 0-9 in die erste Zeile ein, wenn Sie Bindestriche in Ihren Verzeichnisnamen haben. –

-1
RewriteEngine on 
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /(([^/\ ]+/)*)/+([^\ ]*) 
RewriteRule^/%1%3 [L,R=301] 
RewriteRule ^([^/]+)/?$ index.php?folder=$1 [L] 

Linie # 2 den Fall behandeln, wenn jemand so website.com/mypage///// geht es Standardwerte anstelle website.com/mypage/ (glaube ich)

+0

Das ist ein Neuschreiben, keine Weiterleitung. Ein Neuschreiben erfolgt auf dem Server jedes Mal, wenn eine Anfrage eingeht. Das bedeutet, dass der Client nichts davon weiß und Serverressourcen verschwendet werden. –

+1

Ich interpretierte was er sagte und erriet, was er meinte. –

+0

hey, ich brauche das für jeden Unterordner zu funktionieren, der existiert –

0

Ich glaube, es ist :

RedirectMatch 301 domain.com/(.*) domain.com/index.php?folder=$1 
1
RewriteRule ([^/]+)$ index.php?folder=$1 

denke ich, dass es tun wird.

RewriteRule weist einige verwirrende Probleme auf, wenn es in .htaccess verwendet wird, was das Hinzufügen einer RewriteBase erfordert.

Welche Fehler/Probleme sehen Sie? Wenn Sie sicher sein wollen, wie das Umleiten funktioniert, kann das Hinzufügen eines [R] oft beim Debuggen helfen.

Endlich ... existiert der SubfolderGreen wirklich oder nicht? Wenn es existiert, könnte das einige Probleme verursachen.

+0

ja. Die Unterordner existieren. Die Ordner haben Bilder und die index.php zeigt sie an. Der Ordner muss also existieren, aber ich möchte ein zentrales PHP-Skript für alle Bilder-Unterordner. Ich folgte dir nicht auf dem RweriteBase Hinweis .. –

+0

Bitte versuchen Sie die Regel oben mit [L, R] am Ende davon. Dadurch können Sie sehen, wie sich die RewriteRule verhält. Bitte posten Sie die Ergebnisse zurück. Wenn Sie den Test versuchen, können Sie es auch mit domain.com/NoFolder versuchen und sehen, wie sich das verhält? Sie könnten feststellen, dass der Server versucht, die ungültige URL http://domain.com/folder zu http://domain.com/folder/ zu korrigieren, die Ihre Rewrite-Regel nicht enthält. –

+0

Ich habe gerade dieses versucht, aber es geht durch. Wenn ich mit einem beliebigen Ordnernamen versuche, gibt es mir eine 404, und wenn ich mit einem vorhandenen Ordner versuche, öffnet es es für die Verzeichnisliste oder irgendetwas. also kommt es nicht in die Regel. könnte dies daran liegen, dass es sich bei den ordnern um die neu zu schreibenden Quellen handelt? –