mod_rewrite检查文件夹是否存在,如果没有重定向,直到找到有效的子目录

我有以下问题。我有一个包含SEO页的域,每晚都以html格式生成。这些页面的URL可能如下所示:

https://www.mypages.com/seo/florida/miami/somesuburb 但是“ somesuburb”可能不再存在。可能是这样:

https://www.mypages.com/seo/florida/miami/somesuburb导致404。 也 https://www.mypages.com/seo/florida/miami可能会导致404。

所以我试图在htaccess中做到这一点:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (^(.*[\\\/])) /seo/$1 [L,R=301]

这有效,例如:

https://www.mypages.com/seo/florida/miami/doesntexist 前往: https://www.mypages.com/seo/florida/

但是如果Dir florida也不存在,它会断裂并给出404。我认为这是因为尾部有斜杠。

所以我的下一个方法是:

RewriteRule ^(.*)/+$ /seo/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (^(.*[\\\/])) /seo/$1 [L,R]

这导致一个循环:(

有人可以帮忙吗?

问候!

gaoshao1982 回答:mod_rewrite检查文件夹是否存在,如果没有重定向,直到找到有效的子目录

找到了解决方案:

RewriteEngine on

RewriteCond %{REQUEST_URI} /+[^\.]+$/
RewriteRule ^(.+[^/])$ %{REQUEST_URI} [L,R]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /seo/$1 [L,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (^(.*[\\\/])) /seo/$1 [L,R]

只要目录有效,此操作就会返回

本文链接:https://www.f2er.com/3082474.html

大家都在问