2016-06-04 26 views
0

Ich hatte viele URLs mit eckigen Klammern. Dann änderte ich diese URLs und entfernte alle eckigen Klammern von ihnen, aber ich bekomme immer noch weiche 404 Fehler, weil alte URLs im Web indiziert werden. Die URLs sind unterschiedlich, ich kann jede URL manuell umleiten, aber es ist besser, wenn ich eine universelle Regel in .htaccess verwende, die alle eckigen Klammern von den URLs entfernt..htaccess Entfernen Sie eckige Klammern von URLs

http://www.example.com/page-[first] 
http://www.example.com/page-[second] 

etc .. wird ersetzt:

http://www.example.com/page-first 
http://www.example.com/page-second 

Kann ich es tun mit .htaccess?

Danke

Antwort

1

Try this:

RewriteEngine On 
RewriteBase/
RewriteRule ^(.*)\[(.*)$ $1$2 [N,R=301] 
RewriteRule ^(.*)\](.*)$ $1$2 [N,R=301] 

Wenn Ihr .htacess in einem Unterordner ist, ändern RewriteBase / mit:

RewriteBase /sub-folder-name 

Hier ist meine access_log - die die Umleitungen zeigt:

::1 - - [04/Jun/2016:12:29:23 +0800] "GET /test/hello-[world].html HTTP/1.1" 301 246 
::1 - - [04/Jun/2016:12:29:23 +0800] "GET /test/hello-world.html HTTP/1.1" 200 3 
::1 - - [04/Jun/2016:12:37:45 +0800] "GET /test/hello-%5bworld%5d.html HTTP/1.1" 301 246 
::1 - - [04/Jun/2016:12:37:45 +0800] "GET /test/hello-world.html HTTP/1.1" 304 - 
+0

Vielen Dank James für Ihre schnelle Antwort. Ich habe es versucht, aber Klammern konvertiert mit% 5b und% 5d. – Misha

+0

Am Ende, auch wenn die URL test- [Seite] .html oder test-% 5bpage% 5d.html ist, funktioniert die Umleitung gut. Ist Ihre .htaccess in einem Unterordner? –

+0

Nein, es befindet sich im Ordner "Hauptverzeichnis/Stammverzeichnis". – Misha

0

Sie können diese Umleitung tun eine einzige Regel:

RewriteEngine on 

RewriteCond %{THE_REQUEST} /page-(?:%5B|\[)(.*?)(?:%5D|\]) [NC] 
RewriteRule^/%1 [R,L]