所以我正在调整我正在处理的网站上的网址,并且我在网址中传递了几个变量时遇到了一些麻烦。
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时,它都会将我带到该类别的第一页而不是第二页。
答案 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]
如果您可以澄清所需的输入和输出,您将更快地得到正确的答案。