htAccess 在父文件夹不存在时跳过它


htaccess skip over parent folder when it doesnt exist

我目前有 www.mysite.com

我只有一个子文件夹...www.mysite.com/admin

我目前的 .htaccess:

Options +FollowSymLinks 
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^/]*)$ /page.php?id=$1 [L]

因此,目前如果有人转到 mysite.com/admin,则可以访问子文件夹并转到登录页面。

但是,如果有人键入 mysite.com/foo 它会更改为 mysite.com/page.php?id=foo 这正是我想要的。

但是,出于营销目的,我需要让URL为网站的某些页面显示"父"文件夹。 即 mysite.com/parent/foo

无论我键入什么(Think CATCHALL),我都需要忽略 url 的"父"部分,只要不存在具有该名称的实际文件夹,然后重定向到 mysite.com/page.php?id=foo

我目前的所有搜索都显示了如何忽略父级并重新路由到索引页面,但没有显示如何忽略"父级",然后将"子级"作为变量并将其附加到带有 id 的页面名称。

帮助。

谢谢。

这是你想要的吗?

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?:[^/]+/)?([^/]+)$ /page.php?id=$1 [NC,L]

上面的规则可以选择匹配父文件夹(不存在的文件夹),并从以下位置重写请求:

  • example.com/fakefolder/foo

  • example.com/page.php?id=foo