现在我有 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>
所以你可以感受到这个麻烦。
答案 0 :(得分:0)
您似乎希望在网址中支持动态(不一定是预定义)。如果您事先知道这些类别并且它们不会与其他URL冲突,则可以添加此重写规则。
但如果这应该是动态的,重写规则是不可能的。在这种情况下,您应该处理应用程序中的URL(或者有权访问包含可用类别信息的数据库的任何其他地方)。
另一方面,如果类别列表是动态的,但是每个其他URL都是预定义的(例如,“feedback
”可能是),只需在重写规则负责之前放置负责这些预定义URL的重写规则对于类别 - 他们会优先考虑。