我一直在使用我自己的自定义 CMS 在我的服务器上使用 .htaccess 脚本来清理 URL:
# this is the initialization
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# these are the rewrite conditions
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# and finally, the rewrite rules
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1&data1=$2 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1&data1=$2&data2=$3 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1&data1=$2&data2=$3&data3=$4 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1&data1=$2&data2=$3&data3=$4&data4=$5 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1&data1=$2&data2=$3&data3=$4&data4=$5&data5=$6 [L,QSA]
RewriteRule ^([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/([a-zA-Z0-9\-\_\ \+\-]+)/?$ /pages.php?which_page=$1&data1=$2&data2=$3&data3=$4&data4=$5&data5=$6&data6=$7 [L,QSA]
这非常适合将所有请求重定向到我的 CMS 的 pages.php 脚本。
问题是,在极少数情况下,我有一个客户想要添加一个子目录,他们可以在其中添加无限的附加子目录,所有这些子目录都需要重定向到其中的 index.html。对于这个讨论,让我们将此主要子目录称为 main-dir,当用户访问www.mysite.com/main-dir时应将其重定向到www.mysite.com/main-dir/index.html
如果客户端在 main-dir 中添加更多目录,则方向应指向其中的 index.html 例如www.mysite.com/main-dir/some-dir/index.html
所以基本上我需要从常规 pages.php 重定向中排除 main-dir 及其任何子目录,并确保它们都重定向到index.html
其中。
我已经尝试了很多方法来实现这一点,包括在子目录中添加一个 .htaccess 文件 onlyRewriteEngine off
并添加各种条件和规则,例如:
RewriteCond %{REQUEST_URI} !^/collections/^
和
RewriteRule ^(collections)/$1 [L]
没有任何效果。
目前,如果网络用户访问,www.mysite.com/main-dir
他们将被重定向到 pages.php 脚本并且不会被豁免,尽管如果他们访问,www.mysite.com/main-dir/index.html
他们确实会访问 html 页面。
任何援助将不胜感激。