0

我正在使用 htaccess 传递 2 个变量。主题和品牌

RewriteRule ^([A-Za-z0-9_-]+)/?$ ?subject=$1 [NC,L]
RewriteRule ^([A-Za-z0-9_-]+)/?$ ?brand=$1 [NC,L]

在我的函数文件中,我使用页面检测来包含相应的模块。

if (!empty($_REQUEST['subject']))
{
    include_once("templates/pages.php");

}

else if (!empty($_REQUEST['brand']))
{
    include_once("templates/brands_content.php");

}

问题:我无法检测到变量....它总是加载“templates/pages.php” 谁能指导我解决这个问题。

谢谢

4

1 回答 1

0

第二条规则RewriteRule ^([A-Za-z0-9_-]+)/?$ ?brand=$1 [NC,L]永远不会匹配,因为您请求的任何 URL 都与第一个规则匹配(对于主题)。主题或品牌的 URL 显示方式显然没有区别。

http://yourdomain.com/12345

“12345”是品牌还是主题?您需要使正则表达式匹配主题和品牌互斥(或者如果不是,主题,第一条规则将始终首先匹配),或者您可以通过将其添加到您的 URI 来明确说明什么是品牌或主题:

http://yourdomain.com/subject/12345
http://yourdomain.com/brand/12345

因此,您的规则将是:

RewriteRule ^subject/([A-Za-z0-9_-]+)/?$ ?subject=$1 [NC,L]
RewriteRule ^brand/([A-Za-z0-9_-]+)/?$ ?brand=$1 [NC,L]
于 2012-07-16T17:01:16.227 回答