在现有WordPress指令之前尝试以下操作:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^(abc|abc-def-g)$ / [R,L]
这表明,对于任何不是
/abc
或
/abc-def-g
并且不映射到物理文件或目录(即静态资源、图像、CSS、JS等),然后重定向到主页。
这个!
上的前缀RewriteRule
模式否定正则表达式。
这是一个临时(302)重定向。
您不需要重复RewriteEngine On
指令。
<小时>UPDATE: 如果URL以尾部斜杠结尾,则应修改RewriteRule
图案:
RewriteRule !^(abc|abc-def-g)/$ / [R,L]
或者,将尾部斜杠设置为可选:
RewriteRule !^(abc|abc-def-g)/?$ / [R,L]
另一种写同样东西的方法是(正如你在评论中提到的)使用
RewriteCond
指示检查
REQUEST_URI
服务器变量,而不是
RewriteRule
图案。这可能更容易阅读,但由于
RewriteRule
图案始终首先处理。例如:RewriteCond %{REQUEST_URI} !^/abc/?$
RewriteCond %{REQUEST_URI} !^/abc-def-g/?$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [R,L]
与(使用交替)相同:RewriteCond %{REQUEST_URI} !^/(abc|abc-def-g)/?$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [R,L]