重定向目录的内容,但不重定向目录本身及其某些子目录和文件
Redirecting the content of a directory, but not the directory itself as well as some of its subdirectories and files
当我们将配置文件的 URL 从 example.com/category/profile/
简化为 example.com/profile
等(包括自动删除所有尾部斜线 -- 参见 )时,我们现在需要重定向绑定到旧 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/(.+[^/]) / [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/(.+[^/]) / [R=301,NC,L]
我们正在寻找一种使用 RedirectMatch(下面的代码)的替代(并且更简单)方法来执行此操作,但是我们没有找到一种方法来排除我们需要保留的目录,并且这也没有删除任何尾随来自原始入站链接的斜线。
RedirectMatch 301 ^/category/(.*)$ /
尝试:
RedirectMatch ^/category/((?!index|images|menu|foo|bar)[^/]+)/?$ /
当我们将配置文件的 URL 从 example.com/category/profile/
简化为 example.com/profile
等(包括自动删除所有尾部斜线 -- 参见
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/(.+[^/]) / [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/(.+[^/]) / [R=301,NC,L]
我们正在寻找一种使用 RedirectMatch(下面的代码)的替代(并且更简单)方法来执行此操作,但是我们没有找到一种方法来排除我们需要保留的目录,并且这也没有删除任何尾随来自原始入站链接的斜线。
RedirectMatch 301 ^/category/(.*)$ /
尝试:
RedirectMatch ^/category/((?!index|images|menu|foo|bar)[^/]+)/?$ /