.htaccess重定向,如果文件不存在

时间:2009-03-20 18:02:02

标签: php .htaccess mod-rewrite

所以这就是我想要做的。我有一个简单的框架,我使用mod重写来重写网址,以便他们指向正确的文件。我有一个位于web文件夹内的进程文件夹(web文件夹是所有实际网站文件,如图像,CSS等)。

这很好但我现在要做的是有一个default.php文件来处理表单。如果我将表单指向它,该文件工作得很好,但我希望能够将表单指向它的正确文件,如果文件不存在,那么它使用default.php

表单由类创建,操作设置为进程/ {ID OF THE FORM} .php这个想法是任何人都可以使用类创建表单,如果他们不需要做任何事情special,default.php文件将处理表单。

我意识到我可以将表单类设置为始终使用default.php,然后在default.php文件中我可以检查是否存在正确的文件。如果确实如此,那么使用该文件,如果没有,那么继续处理表单,但我仍然很想知道这样的东西是否适用于mod重写:

RewriteRule ^process/([^/]*) /web/process/$1
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-f
RewriteCond %{DOCUMENT_ROOT}/web/process/$1 !-d
RewriteRule ^process/([^/]*) /web/process/default.php [L]

2 个答案:

答案 0 :(得分:14)

仅此规则应该这样做:

RewriteCond %{DOCUMENT_ROOT}web/$0 !-f
RewriteRule ^process/[^/]+$ web/process/default.php [L]

如果请求的路径无法映射到现有文件,则应将其重写为默认文件。

答案 1 :(得分:2)

您通常应该在RewriteRule之前调用RewriteCond。如果符合Conds,则触发规则。