0

我想重写and /hometo ,但其他一切,比如我想重定向到index.php/editedit.php/asdfgnew.php

编辑和家庭都在自己的工作上,但(.*)优先于这些规则,我在没有 的情况下尝试过RewriteCond,但没有任何效果。

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]

我只需要所有未定义的 URI 重定向到/new.php

我还需要将 URI 保留/asdfg在 URI 中,这样我就可以使用 JavaScript 抓取它并显示适当的内容,或者显示一个页面以让 ppl 发布新帖子或显示现有内容。

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

我有以下工作:

RewriteEngine on
RewriteRule ^home$ /index.php [R]
RewriteRule ^edit$ /edit.php [R]

它将 /home 留在那里并转到 index.php

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

我基本上想防止用户收到 404 或任何其他错误,永远......

4

2 回答 2

1

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

RewriteRule ^home$ index.php [L]
RewriteRule ^edit$ edit.php [L]
于 2012-05-20T11:28:36.050 回答
1

尝试将[L]标志添加到“home”和“edit”规则中,这样“new”规则一旦匹配就不会被处理。

于 2012-05-20T11:29:04.060 回答