Htaccess重定向文件夹并排除两个子文件夹

时间:2018-01-17 02:04:30

标签: php apache .htaccess mod-rewrite

我无法计算我们的RewriteRule,所以我尝试过RedirectMatch。我需要匹配文件夹/2018/和所有其他子文件夹,但我不想重定向/2018/speakers//2018/events/

RedirectMatch 301 ^/2018/$^(speakers|events)($|/) https://example.com/north-america

似乎没有用,我真的无法弄清楚如何在包含后排除。谢谢你的帮助!

如果必须是重写规则,这里是顶部的其余部分。我需要像2017年,2016年等多年这样做,所以也许这是最好的方法。

# Force https

RewriteCond %{HTTP:X-Pagely-SSL} off
RewriteRule ^(.*)$ https://example.org/$1 [R=301,L]

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin

RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

1 个答案:

答案 0 :(得分:0)

您可以使用RewriteCond排除某些网址

RewriteCond %{REQUEST_URI} !^/2018/(speakers|events)
RewriteRule ^/?2018/(.+) https://example.com/north-america/$1 [R=301,QSA,L]

第1行:如果请求uri未以/2018/speakers/2018/events

开头

第2行:如果请求uri以/2018/开头,则会永久重定向到https://example.com/north-america/$1(.+)的反向引用。