从
http://localhost/search.php?keyword=abc
到
http://localhost/abc.html
要求用rewriterule
不用rewritecond
谢谢
我是这样写的:RewriteRule ^keywords=([^&]*) $1.html
无效果
http://localhost/search.php?keyword=abc
到
http://localhost/abc.html
要求用rewriterule
不用rewritecond
谢谢
我是这样写的:RewriteRule ^keywords=([^&]*) $1.html
无效果
RewriteRule (.*).html /search.php?keyword=$1 [QSA,L]
我用
#RewriteCond %{QUERY_STRING} ^keywords=(.*?)(&.*)?$
#RewriteRule ^.*$ %1.html
是可以实现我要的效果,可是由于某种原因,我不能使用rewriteCond
我要的是从动态页到静态页
RewriteRule ^\?keywords=(.*?)(&.*)?$ $1.html [QSA,L]没测试,随便写的。
RewriteRule (.+)\.html /search.php?keyword=$1 [L]
访问search.php?keyword=abc时实际是访问abc.html吗?rewrite的功能
是在访问a时,即用户输入a地址(浏览器显示的a),服务器端实际处理的是b请求,也就是a并不存在,用户看到的结果相当于直接访问b的结果
写作RewriteRule a blz这样感觉是跟平时需求反的,你既然要用户输入php了,直接在程序里面写个跳转好了,干嘛还搞rewirte呢
用户输入
search.php?keywords=abc+def+ghk
则跳转到
abc-def-ghk.html我的写法是:
#RewriteRule ^(.*?)\+(.*)$ $1\-$2 [NE,N]
#RewriteCond %{QUERY_STRING} ^keywords=(.*?)(&.*)?$
#RewriteRule ^.*$ %1.html
它可以跳转abc+def+ghk.html到abc-def-ghk.html
也可以跳转search.php?keywords=abc+def+ghk到abc+def+ghk.html
但是就是不能同时起作用。
我是从静态到动态,与平时静态化的相反。#RewriteCond %{QUERY_STRING} ^keywords=(.*?)(&.*)?$
#RewriteRule ^.*$ %1.html
上面的语句是能达到我的要求的,但是它不能继承上面的rewriterule的结果。
所以我想把它换成rewriterule的
你确认你的问题描述没问题? 还是我的理解有问题?
如果是你后面提到的需求, 就与 rewrite 完全没有关系..只需要在你的 search.php 中判断$keyword = $_GET['keywords'];
if ( file_exits($keyword.".html")....
header("Location: $keyword.html");
exit;
else 这里去处理生成 .html 文件即可.明白了??别把需求整得那么复杂...
可是这里就是要求rewrite实现。
你的^keywords=([^&]*) $1.html 明显是把这个当成是query串了吧?
把
search.php?keywords=a+b+c
改成
search.php?keywords=a-b-c?
keywords=a b c
想把它转成
keywords=a-b-c
老是报错。[Tue Jul 06 14:07:14 2010] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.