使用htaccess和php创建伪造的子目录,并按原样保留现有目录

我有一个网站,该网站已经有许多子目录. (所有存在于服务器的文件系统中)
我想用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中的所有虚拟文件夹.

上一篇:php-无法从.htaccess生成的网址获取变量


下一篇:如何在Apache服务器(和其他服务器)上的PHP中检测对.htaccess的支持