php - .htaccess 如果文件不存在则重定向

标签 php .htaccess mod-rewrite

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

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

表单由一个类创建,操作设置为转到 process/{ID OF THE FORM}.php 这个想法是任何人都可以使用该类创建一个表单,如果他们不需要做任何事情特别的,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]

最佳答案

仅此规则就可以做到:

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

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

关于php - .htaccess 如果文件不存在则重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667284/

相关文章:

AngularJS SSL .htaccess 问题

javascript - AJAX 与 FOR 循环 JS

php - Laravel 数据迁移

php/mysql SERF 网址

.htaccess - 重写 AJAX 抓取规则

regex - example.com/en/blabla 的行为类似于 example.com/blabla?lang=en

apache - URL 重写/正则表达式调试

php - 如何在 Symfony2 服务容器中设置 Doctrine MongoDB 存储库

javascript - PHP 生成表中的删除按钮,从数据库和页面中删除

php - 仅 .html 的漂亮网址