【发布时间】:2017-04-07 02:34:17
【问题描述】:
根据这个answer,您可以像这样从重定向中排除单个子文件夹:
RewriteEngine on
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]
如何扩展它以包含两个或多个单独的子文件夹?
【问题讨论】:
标签: regex apache .htaccess redirect
根据这个answer,您可以像这样从重定向中排除单个子文件夹:
RewriteEngine on
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]
如何扩展它以包含两个或多个单独的子文件夹?
【问题讨论】:
标签: regex apache .htaccess redirect
如果您打算使用这些规则重定向 Wordpress 站点,则必须将“index.php”包含在排除列表中,否则排除将不起作用 - 因为 Wordpress 通过 index.php 处理所有内容。
这是一个使用 Wordpress 的示例,如果您想重定向域,但您仍然希望管理员能够登录到之前的 wp-admin 部分。作为一个额外的例子,sitemap_index.xml 也被排除在重定向之外。
RewriteCond %{REQUEST_URI} !^/wp-admin($|/)
RewriteCond %{REQUEST_URI} !^/wp-login.php$
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteCond %{REQUEST_URI} !^/sitemap_index.xml$
RewriteRule (.*) https://www.newdomain.com/$1 [R=301,L]
【讨论】:
您可以使用以下代码排除多个文件夹:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/test/
RewriteCond %{REQUEST_URI} !^/my-folder/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
这会将所有不以文件夹 /test/ 或 /my-folder/ 开头的请求重定向到 newdomain.com。
来源:基于来自here 的损坏代码。
【讨论】:
如果您关注a different answer 来回答您引用的问题,可能会更易于阅读和维护。
RewriteEngine on
# Do not rewrite these directories
RewriteRule ^(uploads) - [L]
RewriteRule ^(second) - [L]
# Rewrite all other URL
RewriteRule (.*) http://example.com/$1 [L,R=301]
【讨论】: