remove directory after main url using htaccess

会有一股神秘感。 提交于 2019-12-13 06:07:55

问题


With the following url http://www.example.com/de/here/ I want to remove the "de" directory (or whatever may be in front of the "here" directory, if anything even is in front of it) so a user is directed to http://www.example.com/here/ instead, which is a directory that does actually exist.

The url could even be something like http://www.example.com/it/here/ or any other combination of 2 letters.

The url could also just be http://www.example.com/here/ in which case I don't want anything removed at all.

I have searched for a solution here but cant seem to make anything work correctly so any help would be much appreciated.


回答1:


You can use this kind of htaccess :

RewriteEngine On
RewriteBase /
RewriteRule ^[A-Za-z]{2}/(.*)$ $1 [L,R=301]

Example of redirections caused by this code :

http://www.example.com/de/foo/  => http://www.example.com/foo/
http://www.example.com/de/      => http://www.example.com/
http://www.example.com/it/bar/  => http://www.example.com/bar/
http://www.example.com/FR/baz/  => http://www.example.com/baz/

Please note you won't be able to access the language (de, it, fr...) anymore.

Another point, be careful with this kind of url (the redirection will be executed twice) :

http://www.example.com/de/go/   => http://www.example.com/go/
http://www.example.com/go/      => http://www.example.com/

EDIT

Now I've got more details, here is an htaccess you can you to remove the language for specified folders :

RewriteEngine On
RewriteBase /
RewriteRule ^[A-Za-z]{2}/here/(.*)$          here/$1 [L,R=301]
RewriteRule ^[A-Za-z]{2}/anotherfolder/(.*)$ anotherfolder/$1 [L,R=301]


来源:https://stackoverflow.com/questions/16378326/remove-directory-after-main-url-using-htaccess

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!