WordPress 网站在 Apache 中部署时使用 .htaccess 文件指定重写规则。
但是,有时当有其它程序时,比如:CWP自定义子域名文件夹目录路径编辑vhosts文件,需要排除301重定向例外文件夹目录,绕过WordPress的伪静态规则。
以下是一种可能的方法。
.htaccess 文件添加排除文件夹目录规则
如果有将不带www顶级域名自动跳转访问二级域名,需要在 .htaccess 文件添加重定向排除文件夹目录规则 ▼
RewriteCond %{REQUEST_URI} !^/img.chenweiliang.com/.*$ [NC]
将此代码放在第一条规则之前,即可实现指定目录排除功能 ▼
RewriteEngine On RewriteCond %{REQUEST_URI} !^/img.chenweiliang.com/.*$ [NC] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
- 设置生效后,访问文件夹目录
/img.chenweiliang.com/
之内的页面,不会被 WordPress 处理。
二级目录 /go/ 无法重定向问题
陈沩亮博客使用WordPress插件GTranslate付费版,确定GTranslate插件没有使用 /go/ 作为二级目录和二级域名。
发现使用Pretty Link插件添加重定向陈沩亮博客的Telegram频道链接时:
https://www.chenweiliang.com/go/tgchannel
- (这是因为Pretty Link插件的跳转链接,被 .htaccess 文件里的RewriteRule重定向规则覆盖了)
竟然会自动跳转到不存在的子域名:
http://go. chenweiliang.com/go/tgchannel
- (为避免出现死链接,所以在上方链接的 go. 后面添加空格)
然而,在陈沩亮博客的 .htaccess 文件里搜索,并没有找到包含 /go/ 的 RewriteRule。
当我尝试删除GTranslate config RewriteRule 之后,此链接居然成功重定向了:
https://www.chenweiliang.com/go/tgchannel
- 所以,我非常确定是 GTranslate config RewriteRule 造成子目录链接 /go/ 的重定向错误。
如何排除 /go/ 子目录重定向?
若是需要设置排除多个不同的子目录,可参考下方的重定向规则进行添加 ▼
RewriteCond %{REQUEST_URI} !^/?(directory1|directory2)($|/)
- 在
directory1|directory2|etc
中放置所需数量的目录。 - 这应该是“如果 REQUEST_URI 不以 /directory1 或 /directory2 开头”。
它将匹配:
- /directory1/dasdas
- /directory1
- /directory1/
等等……
如何在 RewriteRule 设置排除 /go/ 跳转链接?
只需将以下“排除 /go/ 子目录重定向”的规则,添加到GTranslate重定向规则的上面即可 ▼
# Exclude /go/ subdirectory redirection
RewriteCond %{REQUEST_URI} !^/?(go)($|/)
### BEGIN GTranslate config ###
RewriteRule ^([a-z]{2}|af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(.*)$ http://$1.chenweiliang.com/$2 [R=301,L,QSA]
RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(.*)$ /$1/$3 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)/(.*)$ /wp-content/plugins/gtranslate/url_addon/gtranslate.php?glang=$1&gurl=$2 [L,QSA]
RewriteRule ^(af|sq|am|ar|hy|az|eu|be|bn|bs|bg|ca|ceb|ny|zh-CN|zh-TW|co|hr|cs|da|nl|en|eo|et|tl|fi|fr|fy|gl|ka|de|el|gu|ht|ha|haw|iw|hi|hmn|hu|is|ig|id|ga|it|ja|jw|kn|kk|km|ko|ku|ky|lo|la|lv|lt|lb|mk|mg|ms|ml|mt|mi|mr|mn|my|ne|no|ps|fa|pl|pt|pa|ro|ru|sm|gd|sr|st|sn|sd|si|sk|sl|so|es|su|sw|sv|tg|ta|te|th|tr|uk|ur|uz|vi|cy|xh|yi|yo|zu)$ /$1/ [R=301,L]
### END GTranslate config ###
希望陈沩亮博客( https://www.chenweiliang.com/ ) 分享的《.htaccess排除301重定向绕过伪静态例外文件夹目录规则》,对您有帮助。
欢迎分享本文链接:https://www.chenweiliang.com/cwl-28236.html
喜欢就分享和按赞!您的分享和按赞,是我们持续的动力!