Так как мы упростили URL-адреса наших профилей от example.com/category/profile/
до example.com/profile
и т. Д. (Включая автоматическое удаление всех завершающих косых черт - см. Vanity URLs without trailing slashes), теперь нам нужно перенаправить все входящие ссылки, привязанные к старым URL-адресам. Мы нашли способ сделать это со следующим кодом (который также исключает файлы и каталоги, которые нам нужно сохранить).Перенаправление содержимого каталога, но не самого каталога, а также некоторых его подкаталогов и файлов
RewriteCond %{REQUEST_URI} !^/category/index [NC] #Excludes /category/index.html from redirect
RewriteCond %{REQUEST_URI} !^/category/images [NC] #Excludes /category/images/ from redirect
RewriteCond %{REQUEST_URI} !^/category/menu [NC] #Excludes /category/menu/ from redirect
RewriteRule ^category/(.+[^/]) /$1 [R=301,NC,L]
Но это работает только в том случае, если мы сохраним все исходные каталоги, содержащие наши индивидуальные профили; если мы удалим эти каталоги, перенаправление перестанет работать. Мы попробовали ниже, но это не помогло.
RewriteCond %{REQUEST_URI} !^/category/index [NC]
RewriteCond %{REQUEST_URI} !^/category/images [NC]
RewriteCond %{REQUEST_URI} !^/category/menu [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^category/(.+[^/]) /$1 [R=301,NC,L]
Мы искали в качестве альтернативы (и гораздо проще) способ сделать это, используя RedirectMatch (код ниже), но мы не нашли способ, чтобы исключить каталоги, мы должны сохранить, и это также не удалить любые конечные косые черты от исходных, входящих ссылок.
RedirectMatch 301 ^/category/(.*)$ /$1
Эй @Starkeen - ты гений - это работает! Мы будем внедрять это в FASHION NET сразу. Спасибо вам!!!! – haadaa