htaccess rewriteRule不显示新网址

时间:2016-04-02 17:23:38

标签: php .htaccess mod-rewrite

我的问题是当我点击链接(domain.com/?brandID=1&name=Beretta)时,如何显示RewriteRule中的URL。

我的测试让我相信它可能与index.php有关,但可能没有。我的脚本由设置的GET变量触发,并查询数据库并包含显示结果的页面(以及“丑陋”的URL)。

这是.htaccess代码:

# Rewrite for ?brandID=1&name=Name
RewriteRule ^pistol-brand/([0-9]+)/([0-9a-zA-Z_-]+) ?brandID=$1&name=$2 [NC,L]

我想用domain.com/pistol-brand/1/beretta替换domain.com/?brandID=1&name=Beretta

上面的代码显示了“丑陋”的网址,但是当我将网址更改为RewriteRule所声明的网址(domain.com/pistol-brand/1/beretta)时,该页面正常工作。

如何在点击链接时显示“新”网址?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您还需要一个将丑陋的网址重定向到sef格式

##1)Redirect /?brandID=foo&name=bar to //pistol-brand/foo/bar##
RewriteCond %{THE_REQUEST} /\?brandID=([^&]+)&name=([^\s&]+) [NC]
RewriteRule ^ /pistol-brand/%1/%2? [L,R]
##2)Rewrite  /pistol-brand/foo/bar to /?brandID=foo&name=bar##
    RewriteRule ^pistol-brand/([0-9]+)/([0-9a-zA-Z_-]+) ?brandID=$1&name=$2 [NC,L]