2010-05-04 82 views
3

我有一个网站,其中有许多子目录。 (全部存在于服务器的文件系统中) 我想使用htaccess创建新的“虚拟”子目录,但是我只希望htaccess规则适用于在数据库中列出且不存在于文件系统中的目录。用htaccess和php创建假子目录并保持现有目录原样

即 文件系统有:/ DIR1/&/DIR2/

MySQL数据库有记录 'DIR3' & 'dir4'

而且我想:

答:mysite的。 com/dir1 /和mysite.com/dir2/显示现有的旧内容

B:mysite.com/dir3/和mysite.com/dir4/显示MySQL提供的内容MySQL sctipt通过重定向像: mysite.com/myscript.php?dir=dir3

C:mysite.com/dir5/显示器404错误(DIR不DB也不在数据库存在)

基本上我想htaccess来像这样工作: IF DIR存在于数据库中 - 应用重写规则并显示来自myscript.php的内容?dir = DIR

否则不应用任何规则。

我可以创建一个单独的php脚本,当给定dir名称存在于数据库中时可以返回0/1,但是如何让mod_rewrite从该脚本中获取数据?

htaccess/PHP有可能吗?

回答

0

你不能在.htaccess afaik中做这样的检查。我会尝试将旧的内容文件夹硬编码到.htaccess中,并使用一种模式来重写其余部分。

3

选项1:做以下的htaccess:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ _redirect.php/$1 [L] 

这将重定向物理上不存在于PHP脚本的所有显示目录和文件。内部的脚本可以手动解析请求的URL,并检查您的MySQL表下一步要做什么 - 向前或返回404

选项2:如果使用文件夹整理表不经常改变和/或你需要速度,表格更改后,从php生成你的htaccess文件,并从那里映射所有虚拟文件夹。

+0

谢谢!选项#1似乎在工作! – Arseni 2010-05-05 08:43:30