2013-10-27 29 views
0

预先感谢帮助。我正在使用mod重写,并需要帮助将特定的PHP URL转换为更漂亮的URL。具有多个变量的URL的具体mod重写

具体来说,我想PHP的URL转换:

www.sample.com/subcategory.php?subcategory=sports-achievement &页面= 1

www.sample。 com/sports/sports-achievement.html

所以要具体,规则是:

  • 一)破折号前的subategory的第一部分应该是 目录(例如,sports- - 进/运动/
  • B)整个子类别为 页面字符串“体育achievement.html
  • 三)PHP页面仍然需要 通过网页字符串(因为有多个页面)

在此先感谢您的帮助!

+0

不知道如果你已经理解重写如何工作,请查看[本回复](http://stackoverflow.com/questions/18027520/howto-rewrite-engine-rule/18028542#18028542)我写给另一个用户第一。一旦你阅读了它,我的问题是:你需要你漂亮的URL的中间部分('sports')来进行重定向吗?或者只是需要的子类别? (如果用户只浏览“www.sample.com/sports”,会发生什么?)所有其他页面的名称是否相同,即“www.sample.com/x/x-achievement.html”?另外,漂亮网址中的页码在哪里? – Kay

+0

凯 - 谢谢。我这样做是因为我重写了一个网站,并希望匹配旧的网址结构。有很多旧的入站链接直接进入页面。所以虽然我不需要运动,但这是旧网址的确切结构。如果用户转到“/ sports”,那么他们会在页面上列出体育类别(层级是Category /子类别/页面)。现在页码是一个很好的问题 - 考虑放在哪里? – RedFalcon6

+0

仍然困惑:这是旧的URL结构,哪个是新的?用户将在未来看到/链接到网页本身的URL是什么? – Kay

回答

0

要获得重定向和内部重写,你必须做这样的事情。

#Redirect 
RewriteCond %{THE_REQUEST} (GET|POST)\ /subcategory\.php\?subcategory=([^-]+)-([^&]+)(&(.*)|)\ HTTP 
RewriteRule ^subcategory\.php$ /%2/%2-%3.html?%5 [R,L] 

#Internal rewrite 
RewriteRule ^(.*)/\1-(.*)\.html$ subcategory.php?subcategory=$1-$2 [QSA,L] 

没有真正的隐藏页面名称的方法。您可以使用后期请求并将其隐藏在后期主体中。我的回答to this question显示了如何使用cookie来做到这一点,但这很可能会混淆搜索引擎,因为不同的页面在相同的页面名称下可用。