htaccess不会重写所有规则

时间:2016-09-12 22:21:00

标签: apache .htaccess mod-rewrite url-rewriting

因为我是.htaccess的新手,所以我想尽量使用它。我正在重写一些网址虽然问题是,如果我重写3个网址,那么最重要的是唯一正在工作的网址。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^forums/([^/]*)/([^/]*)/$ /forums.php?page=$1&sectionid=$2 [L]
RewriteRule ^forums/([^/]*)/topic/([^/]*)/$ /forums.php?page=$1&topic=$2 [L]

ErrorDocument 400   /error.php
ErrorDocument 401   /error.php
ErrorDocument 403   /error.php
ErrorDocument 404   /error.php
ErrorDocument 500   /error.php

所以,如果我在第一个规则之上添加一个新规则,那将是唯一有效的规则。 我用错了吗?

另外,RewriteCond是如何工作的?

2 个答案:

答案 0 :(得分:0)

尝试删除[L]标记或为每个规则创建单独的RewriteCond,

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^forums/([^/]*)/([^/]*)/$ /forums.php?page=$1&sectionid=$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^forums/([^/]*)/topic/([^/]*)/$ /forums.php?page=$1&topic=$2 [L]

在最后一条规则上使用[L]

答案 1 :(得分:0)

感谢@Abhishek的回答,我得到了解决。

我必须为每个网址使用不同的Rewriterules。所以他们在某种程度上是独一无二的。