2016-05-06 7 views
0

Ich bin neu in htacces.Wie extern Umleitung URL mit Htaccess, wenn URL Leerzeichen, Nummer oder Bindestrich

Ich möchte htaccess wie stackoverflow erstellen.

Überprüfen Sie eine beliebige URL von stackoverflow wie "hide file extension in url by htaccess". Wenn Sie .html/.php/.asp/.abc/.xyz irgendetwas setzen, wird es auf "hide file extension in url by htaccess" umleiten nur nur Sie setzen/zuletzt hat es keine Wirkung

Bedeutet, ich möchte sagen, dass URL-Dateiname irgendeine Tastatur enthalten Zeichen und es wird extern umleiten.

unten sind meine aktuellen .htaccess

RewriteEngine on 

# To internally 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.*)$ $1.html 


# To externally redirect /dir/file.html to /dir/file 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.html[\s?] [NC] 
RewriteRule^%1 [R=301,L,NE] 
+0

@anubhava, also ich möchte umleiten ---/Verzeichnis/Datei 1.html nach/Verzeichnis/Datei 1 ---/Verzeichnis/Fi le-1.html zu/dir/file-1 --- /dir/file-1-2.html zu/dir/file-1-2 –

+0

@anubhava NICHT für externe Umleitung arbeiten. –

+0

@anubhava wenn ich schreibe http: //localhost/folder1/folder2/About-us.html und drücken Sie die Eingabetaste drücken, um http umleitet: // localhost/Über-uns –

Antwort

1

Sie müssen angemessen verwenden `` RewriteBase`:

RewriteEngine on 
RewriteBase /folder1/folder2/ 

# To externally redirect /dir/file.html to /dir/file 
RewriteCond %{THE_REQUEST} ^GET\s(.+?)\.html[\s?] [NC] 
RewriteRule^%1 [R=301,L,NE] 

# To internally 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.+?)/?$ $1.html [L] 
+0

Problem bleibt gleich nach Änderungen in der Datei htaccess. –

+0

jetzt "http: // localhost/ordner1/ordner2/kontakt us.html" wird umgeleitet auf "http: // localhost/ordner1/ordner2/ordner1/ordner2/kontaktieren Sie uns" ODER "http: // localhost /folder1/folder2/About-us.html "Umleitung zu " http: // localhost/ordner1/ordner2/ordner1/ordner2/Über uns " –

+0

Das ist nicht korrekt. Die obigen Regeln funktionieren auf meinem Apache einwandfrei. Sie haben wahrscheinlich einen schlechten Cache im Browser oder eine andere Regel, die Konflikte verursacht. – anubhava

0

Meine letzte .htaccess-Datei mit Hilfe von großen @anubhava

RewriteEngine on 
RewriteBase /folder1/folder2/ 

# To externally redirect /folder1/folder2/file.html to /folder1/folder2/file.html or any extension like .php/.asp/.abcd etc 
RewriteCond %{THE_REQUEST} ^GET\s(.+?)\.[a-z0-9]{2,}[\s?] [NC] 
RewriteRule^%1 [R=301,L,NE] 

# To internally 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.html -f 
RewriteRule ^(.+?)/?$ $1.html [L]