0

现在我有如下网址

mysite.com/category/football
mysite.com/category/volleyball
mysite.com/category/hockey

它对应于规则:

RewriteRule ^category/([^/]*)$ category/index.php?name=$1 [L,QSA]

但我也有其他页面,例如:mysite.com/feedback或什么...

如何category从 url 中删除而不影响其他页面?

如果我会做这样的规则:

RewriteRule ^(.*)$ index.php?category=$1 [L]

每个其他页面都是一个类别,也许它必须是这样的:

RewriteRule ^(football|volleyball|hockey)$ category/index.php?category=$1 [L,QSA]

但是类别可以不同。管理员可以添加新类别或删除|更改旧类别。

更新

我在文件中做了一个例子:

反馈/index.php

   <h1>Feedback</h1>

.htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^/(.*)$ category.php?category=$1 [L,QSA]

类别.php

// controller category

echo "This is a Category: <br />";

if (isset($_GET['category']) and !empty($_GET['category']))
{
    echo "<b>".$_GET['category']."</b>";
}

索引.php

<a href="/football">Football</a>
<a href="/volleyball">Volleyball</a>
<a href="/hockey">Hockey</a>

<p>
    <a href="/feedback">Feedback</a>
</p>

所以你可以感受到这个麻烦。

4

1 回答 1

0

看起来你想在你的 URL中支持一些动态的(不一定是预定义的)。如果您预先知道这些类别并且它们不会与其他 URL 冲突,则可以添加此重写规则。

但如果这应该是动态的,那么重写规则是毫无疑问的。在这种情况下,您应该在您的应用程序(或任何其他有权访问包含可用类别信息的数据库的地方)中处理 URL。

另一方面,如果类别列表是动态的,但每个其他 URL 都是预定义的(例如,“ feedback”可能是),只需将负责这些预定义 URL 的重写规则放在负责类别的重写规则之前 - 它们将优先。

于 2013-06-08T10:14:31.163 回答