Apache服务器下.htaccess规则:仅当目录内容不存在时重定向
Apache下WordPress的条件重定向解决方案
针对你需要的仅当/actions/目录下内容不存在时才重定向到归档域名的需求,不能用RedirectMatch(它属于mod_alias模块,无法添加存在性判断条件),需要用mod_rewrite模块来实现。
直接在主站的.htaccess文件中,添加以下规则(要放在WordPress默认的重写规则之前):
RewriteEngine On # 仅当请求的文件/目录不存在时,重定向/actions/下的内容到归档站 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^actions/(.*)$ https://archives.sitename.it/actions/$1 [R=301,L] # 以下是WordPress默认的重写规则(保留原内容即可) RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
规则说明:
RewriteCond %{REQUEST_FILENAME} !-f:判断请求的路径不是一个已存在的文件RewriteCond %{REQUEST_FILENAME} !-d:判断请求的路径不是一个已存在的目录RewriteRule ^actions/(.*)$ ...:匹配所有以/actions/开头的请求路径,将捕获到的$1(即actions/之后的部分)替换到归档站的对应路径中[R=301,L]:R=301表示永久重定向(利于SEO),测试阶段可以改成R=302临时重定向;L表示执行完这条规则后停止后续规则处理
注意事项:
- 确保Apache服务器已启用mod_rewrite模块
- 规则必须放在WordPress默认规则之前,否则会被WordPress的规则优先处理
- 测试时可以先访问一个主站
/actions/下不存在的路径,确认是否正确跳转到归档站;再访问存在的路径,确认不会被重定向
内容的提问来源于stack exchange,提问作者ynnesti collettivo creativo
相关产品推荐
相关产品推荐

