.htaccess重定向所有未知的,除了一些已定义的

时间:2012-05-20 11:11:30

标签: .htaccess url-rewriting

我想将/home重写为index.php/edit改为edit.php,但其他所有内容,例如/asdfg我想重定向到{{1} }}

编辑和回家都是他们自己的工作,但new.php优先于这些规则,我在没有(.*)的情况下尝试了,但是没有任何作用。

RewriteCond

我只需要将所有未定义的URI重定向到RewriteEngine on RewriteBase / RewriteRule ^home$ /index.php RewriteRule ^edit$ /edit.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ /new.php [L,R=301]

我还需要将/new.php保留在URI中,这样我就可以使用JavaScript抓住它并显示相应的内容,或者显示一个页面以让ppl发布新帖子或显示现有内容。< / p>

我无法定义所有现有内容,因为它来自数据库,只有少数预定义的,保留的/asdfg将重定向到预定义的页面。

我有以下工作:

"/folders"

离开/ home并转到index.php

现在我只需要将所有未知请求重定向到默认页面new.php。

我基本上想要阻止用户获得404或任何其他错误..

2 个答案:

答案 0 :(得分:1)

您需要将last标志添加到您的第一个RewriteRules中,以便最后一个RewriteRule不生效:

RewriteRule ^home$ index.php [L]
RewriteRule ^edit$ edit.php [L]

答案 1 :(得分:1)

尝试将[L]标记添加到“主页”和“编辑”规则中,以便在匹配后不会处理“新”规则。