【发布时间】:2013-04-02 20:54:07
【问题描述】:
我正在尝试使用 mod_rewrite 在我的 .htaccess 文件中配置动态 mod 重写规则。我非常接近弄清楚这一点。我正在尝试获取这样的 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 确实有效。但是,旧 URL 不会重定向,并且仍在浏览器中显示。
我不确定这是否会更容易,但如果我能让 URL 看起来像这样:
http://www.mysite.com/service/14/title/events
http://www.mysite.com/service/48/title/planning
那也行。我真的不需要将第二个查询标题放在 URL 中,但如果将其留在 URL 中更容易,那就没什么大不了的。
编辑:已回答 非常感谢所有为解决方案做出贡献的人。我的重写规则得到了这个:
RewriteRule ^index/service/(.*)/(.*)/$ index.php?service=$1&title=$2
一旦我添加了“索引”,它就可以同时处理两个查询字符串。就重定向而言,我编辑了我的 php 脚本并在那里进行了所有 URL 重定向,这要容易得多。特别感谢 mkjasinski 指出这一点。
【问题讨论】:
-
您遇到错误了吗?
-
不。没有错误。漂亮的 URL 可以工作,但旧的 URL 不会重定向到它们。导航到旧 URL 时会显示该页面,但浏览器不会重定向到漂亮的 URL。
标签: regex .htaccess mod-rewrite