我想在我的.htaccess文件中使用mod_rewrite配置动态mod重写规则。我非常接近解决这个问题。我想获得的URL像这样:.htaccess漂亮的URL无法正确显示与重定向
http://www.mysite.com/index.php?service=14&title=events
http://www.mysite.com/index.php?service=48&title=planning
要自动重写这些:
http://www.mysite.com/service/14/events
http://www.mysite.com/service/48/planning
这是到目前为止我的代码:
RewriteRule ^service/(.*)/(.*)$ index.php?service=$1&title=$2 [NC,L]
RewriteCond %{QUERY_STRING} ^service=$1&title=$2 [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php [NC]
RewriteRule ^index.php$ /service/$1/$2 [L,R=301]
我觉得有些不妥最后一行可能?我不是最好的正则表达式,所以任何帮助将不胜感激。 编辑:只是想清楚,漂亮的网址确实有效。但是,旧网址并未重定向,并且仍在浏览器中显示。
我不知道这是否会是任何容易,但如果我能得到的URL看起来像这样:
http://www.mysite.com/service/14/title/events
http://www.mysite.com/service/48/title/planning
然后,将工作过。我真的不需要第二个查询标题在URL中,但如果它更容易留在那里,那么没有什么大不了的。
编辑:回复 非常感谢所有帮助解决方案的人。我得到这个我重写规则:
RewriteRule ^index/service/(.*)/(.*)/$ index.php?service=$1&title=$2
当我加入“指数”它用查询字符串的工作。就重定向而言,我编辑了我的php脚本,并将所有的URL重定向到那里,这很容易。特别感谢mkjasinski指出这一点。在$_GET
在index.php
http://localhost/service/12/This-is-text
:
你得到一个错误? –
不是。没有错误。漂亮的URL可以工作,但旧的URL不会重定向到它们。导航到旧网址时显示页面,但浏览器不会重定向到漂亮的网页。 – DJSK