从htaccess中识别变量

时间:2012-07-16 15:02:50

标签: .htaccess variables

我使用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” 任何人都可以指导我解决这个问题。

感谢

1 个答案:

答案 0 :(得分:0)

第二条规则RewriteRule ^([A-Za-z0-9_-]+)/?$ ?brand=$1 [NC,L]将永远不会匹配,因为您请求的任何网址与第一条网格匹配(对于主题)。对于主题或品牌,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]