我有一个网站,该网站已经有许多子目录. (所有存在于服务器的文件系统中)
我想用htaccess创建新的“虚拟”子目录,但我只希望htaccess规则适用于数据库中列出的目录,而文件系统中不存在的目录.
即
文件系统具有:/ dir1 /& / dir2 /
MySQL数据库记录了’dir3’& ‘dir4’
而且我要:
答:mysite.com/dir1/和mysite.com/dir2/显示现有的旧内容
B:mysite.com/dir3/和mysite.com/dir4/显示PHP sctipt通过重定向提供的MySQL内容,例如:
mysite.com/myscript.php?dir=dir3
C:mysite.com/dir5/显示404错误(DB和数据库中均不存在Dir)
基本上我希望.htaccess像这样工作:
如果DB中存在DIR,则应用重写规则并显示myscript.php?dir = DIR中的内容
ELSE不应用任何规则.
我可以创建一个单独的php脚本,当给定的目录名是否存在于数据库中时,该脚本可以返回0/1,但是如何使mod_rewrite从该脚本获取数据?
htaccess / PHP可能吗?
解决方法:
选项1:进行以下htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$_redirect.php/$1 [L]
它将所有物理上不存在的目录和文件重定向到php脚本.在该脚本中,您可以手动解析请求的url并检查mysql表下一步该怎么做-转发或返回404.
选项2:如果您的带有文件夹的表不经常更改和/或需要提高速度,请在表更改后从php生成htaccess文件,然后在其中映射db中的所有虚拟文件夹.