localhost/sdpisdtv2014/play/show.php?cat=rc&id=573
我想要以下结果
localhost/sdpisdtv2014/play/show/rc/573
我的.htaccess
代码是(但不起作用)
Options +FollowSymLinks
RewriteEngine on
RewriteRule show/cat/(.*)/id/(.*)/ show.php?cat=$1&id=$2
RewriteRule show/cat/(.*)/id/(.*) show.php?cat=$1&id=$2
Mode_rewrite已启用并且还会检查是否重定向网站,并且完全正常工作
答案 0 :(得分:0)
马上,我可以看到你想要的结果是缺少“cat”参数。我注意到的另一件事是.*
通常是贪婪的量词:它会消耗所有东西,所以它之后什么都不会匹配。我不记得究竟是什么Apache的正则表达式的味道,但我猜你需要限定字符匹配,或使量词不情愿。第一种方式可能如下:
RewriteRule show/cat/([^\/]*)/id/([^\/]*)/ show.php?cat=$1&id=$2
第二个看起来像:
RewriteRule show/cat/(.*?)/id/(.*?)/ show.php?cat=$1&id=$2
但是,我希望您意识到您提供的网址localhost/sdpisdtv2014/play/show/rc/573
与此模式不符:它缺少"cat"
和"id"
字符串。为了匹配,你需要这样的东西:
localhost/sdpisdtv2014/play/show/cat/rc/id/573/
此外,锚定重写规则通常是个好主意,因此不会意外应用它们。类似的东西:
RewriteRule ^/sdpisdtv2014/play/show/cat/([^\/]*)/id/([^\/]*)/ show.php?cat=$1&id=$2
(假设"localhost"
是域名,而不是路径的一部分。)
答案 1 :(得分:0)
RewriteEngine On
RewriteRule show/cat/([^/]*)/([^/]*)$ show.php?cat=$1&id=$2
这应该有效