0

我的网站上有很多不同的博客,即

mysite.com/news
mysite.com/blog
mysite.com/bits
等。

我在幕后使用相同的 php 脚本,并希望保持 url 整洁,所以我设置了这些规则:

# blogs
RewriteRule ^(bits|blog|news)(/?)$ news/?type=$1    
RewriteRule ^(bits|blog|news)/[a-zA-Z0-9_-]+/([0-9]+)(/?)$ news/article.php?type=$1&id=$2

现在发生的事情是“类型”总是作为新闻出现?我不明白为什么。

4

1 回答 1

0

我建议在您要重定向到的 URL 中添加前导“/” - 而且您不需要将尾随“/”括在括号中。

此外,在规则末尾放置一个 [L] 标志,以阻止它查看 .htaccess 的其余部分

试试这个:

RewriteRule ^(bits|blog|news)/?$ /news/?type=$1 [L]
RewriteRule ^(bits|blog|news)/[a-zA-Z0-9_-]+/([0-9]+)/?$ /news/article.php?type=$1&id=$2 [L]

预先添加 .. 的 RewriteCond

RewriteCond %{QUERY_STRING} ^$

.. 对每个规则也将过滤掉任何带有解析查询字符串的 URL 的机会。

于 2012-05-18T03:59:37.120 回答