Мне нужно перенаправить из:
to http://example.com/newfolder
Но оставьте:
http://example.com/folder/subfolder
Где это. Это возможно? Кажется, я не могу это сделать, не вызывая кучу перенаправления хаоса.
Мне нужно перенаправить из:
to http://example.com/newfolder
Но оставьте:
http://example.com/folder/subfolder
Где это. Это возможно? Кажется, я не могу это сделать, не вызывая кучу перенаправления хаоса.
Я просто столкнулся с этим, и вот решение, которое я придумал. Я предпочитаю этот метод, потому что он не перенаправляет какой-либо подкаталог.
RewriteCond %{REQUEST_URI} ^/root-directory[/]?
RewriteCond %{REQUEST_URI} !^/root-directory/+[/]?
RewriteRule (.*) http://www.example.com/ [R=301,L]
Jestep ответ над перенаправляет "/root-directory", но не перенаправляет "/root-directory/". Это можно устранить и упростить просто:
RewriteCond %{REQUEST_URI} ^/folder/?$
RewriteRule (.*) /newfolder [R=301,L]
Это перенаправит "/folder" и "/folder/", но оставит все подкаталоги в одиночку.
Может быть:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/folder[/]?
RewriteCond %{REQUEST_URI} !^/folder/subfolder[/]?
RewriteRule (.*) /newfolder/$1 [R=301,L]
Это должно перенаправить/папку в /newfolder, но оставить/папку/подпапку
Я пробовал другие методы здесь со смешанным успехом. Я вовсе не эксперт по Apache, но вот простой однострочный вкладыш, который работает каждый раз для меня. Я просто использую RedirectMatch
вместо Redirect
и включаю очень простой RegEx, чтобы закончить матч в или перед трейлинг-косой чертой, что означает, что подкаталоги никогда не должны квалифицироваться как совпадение.
RedirectMatch 301 ^/folder[/]?$ /newfolder
Какой сервер вы используете? Вы можете, например, использовать mod_rewrite, если вы используете apache и делаете что-то вроде этого
RewriteEngine On
RewriteOptions Inherit
RedirectMatch permanent ^/folder/$ http://example.com/newfolder
#I haven't tested the above redirect btw ^
и поместите это в файл .htaccess в каталог/folder/(при условии, что вы можете изменить настройки apache, то есть у вас есть опция AllowOverride All на этом виртуальном хосте)
Вот еще информация http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
Если mod-rewrite
не включен или вы не можете использовать директиву RewriteRule
на своем сервере, вы можете использовать директиву RedirectMatch
модного псевдонима, который является модулем по умолчанию apache httpd server.
RedirectMatch 301 ^/folder/?$ http://example.com/newfolder/
Это будет 301 перенаправление /folder/
в /newfolder/
.
И что мне делать, если я хочу перенаправить с
Http://domain.sof/folder/subfolder
в
Сожалею! Я должен сказать, перенаправить с:
Http://domain.sof/folder/subfolder
в