.htaccess |用页面重写

时间:2014-03-03 19:25:52

标签: regex .htaccess url rewrite

所以我正在调整我正在处理的网站上的网址,并且我在网址中传递了几个变量时遇到了一些麻烦。

mylighting.com/bath-fixture-c-13.html?osCsid=u2qj8o9rvjn0p5pa7p8npuhs54
RewriteRule ^bath-fixture bath-fixture-c-13.html?id=$1

因此,当出现的页面为mylighting.com/bath-fixture

时,此重写非常完美

现在很遗憾,在该页面上还有其他几个要查看的内容,我在使用页面变量时遇到了一些问题。我认为我的代码是正确的,但每当我尝试转到正确的页面时,它似乎都不起作用。

http://mylighting.com/bath-fixture-c-13.html?page=2&id=u0hnumfus6gjhjc45av36663m3
RewriteRule ^bath-fixture/([a-zA-Z0-9]+)$ bath-fixture-c-13.html?page=$1&id=$2

所以我认为我有这个正确但显然不是。我希望输出 mylighting.com/bath-fixture/2代表第二页。

不幸的是,在.htaccess中使用该代码,每次输入该URL时,它都会将我带到该类别的第一页而不是第二页。

1 个答案:

答案 0 :(得分:0)

您似乎误解了RewriteRule的格式。第一个是偶然的工作。

RewriteCond %{QUERY_STRING}  page=([0-9]+)
RewriteRule ^bath-fixture-c-13.html bath-fixture/%1 [R=301,QSA,L]
RewriteRule ^bath-fixture-c-13.html bath-fixture/ [R=301,QSA,L]

RewriteRule的第一个参数是与请求的URL匹配的正则表达式。第二个参数是要作为重定向发送给用户的URL,因此它们最终会显示在您想要的URL上。因为你想解析QUERY_STRING我相信你需要使用RewriteCond。如果您为了SEO目的而这样做,请不要忘记添加[R = 301]。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

如果您正试图转向另一个方向,那么您需要以下内容。

RewriteRule ^bath-fixture/$ bath-fixture-c-13.html [QSA,L]
RewriteRule ^bath-fixture/([0-9]+) bath-fixture-c-13.html?page=$1 [QSA,L]

如果您可以澄清所需的输入和输出,您将更快地得到正确的答案。