htaccess如果文件夹中不存在文件,则重定向到静态页面

时间:2018-03-12 12:14:18

标签: .htaccess mod-rewrite

我有一个名为“car”的文件夹。在这个文件夹中有很多文件。 例如:

 mercedes.php
 audi.php
 bmw.php

使用以下rewriterule,我可以打开“car”文件夹中的任何页面而不添加文件扩展名。所以我只能用car / mercedes而不是car / mercedes.php打开页面。

 RewriteRule ^car/([^\.]+)$ /car/$1.php?&%{QUERY_STRING}

这有效,但现在我正在寻找一个额外的规则,如果该文件夹中不存在该文件 - >重定向到default.php

也许那样?

RewriteCond %{REQUEST_FILENAME}/???\.(html|php) !-f
RewriteRule ^ http://example.com/car/default.php [R=302]

有什么想法吗? 也许它不起作用,因为我的第一条规则?

1 个答案:

答案 0 :(得分:0)

/car/目录中尝试此操作:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^car/(.*)$   /car/default.php? [R=302]

测试一下,如果确定,请将302更改为301以获得永久重定向

此外: Apache默认情况下会丢弃查询字符串,但是如果要追加查询字符串,则可以使用[QSA]标记,除非您要添加空格查询字符串。

另外,您可能会注意到我在?之后添加default.php只是在错误请求时省略了查询字符串。