如何从网址中删除类别?

时间:2013-06-08 09:38:12

标签: php .htaccess mod-rewrite

现在我有 urls ,例如:

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而不影响其他网页?

如果我按照这样做的规则:

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]

category.php

// controller category

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

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

的index.php

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

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

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

1 个答案:

答案 0 :(得分:0)

您似乎希望在网址中支持动态(不一定是预定义)。如果您事先知道这些类别并且它们不会与其他URL冲突,则可以添加此重写规则。

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

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