求一url rewrite

wildlily980 2010-07-04 01:24:17

http://localhost/search.php?keyword=abc

http://localhost/abc.html
要求用rewriterule
不用rewritecond
谢谢
我是这样写的:RewriteRule ^keywords=([^&]*) $1.html
无效果
...全文
187 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrshelly 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wildlily980 的回复:]

当然php能实现,
可是这里就是要求rewrite实现。
[/Quote]

知道啥叫瞎折腾吧?
wildlily980 2010-07-06
  • 打赏
  • 举报
回复
当然php能实现,
可是这里就是要求rewrite实现。
natici 2010-07-06
  • 打赏
  • 举报
回复
是思路一时转不过弯呢还是lz另有需求?有待lz继续发表。。
mrshelly 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wildlily980 的回复:]

其实我的要求是:
用户输入
search.php?keywords=abc+def+ghk
则跳转到
abc-def-ghk.html

我的写法是:
#RewriteRule ^(.*?)\+(.*)$ $1\-$2 [NE,N]
#RewriteCond %{QUERY_STRING} ^keywords=(.*?)(&.*)?$
#RewriteRule ^.*$……
[/Quote]

你确认你的问题描述没问题? 还是我的理解有问题?
如果是你后面提到的需求, 就与 rewrite 完全没有关系..

只需要在你的 search.php 中判断

$keyword = $_GET['keywords'];
if ( file_exits($keyword.".html")....
header("Location: $keyword.html");
exit;
else

这里去处理生成 .html 文件即可.

明白了??

别把需求整得那么复杂...
CunningBoy 2010-07-06
  • 打赏
  • 举报
回复
redirect的规则太多了超过了10次的限制
wildlily980 2010-07-06
  • 打赏
  • 举报
回复
上面的情况已经解决,不过对于
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.
wildlily980 2010-07-06
  • 打赏
  • 举报
回复
请教一下如何

search.php?keywords=a+b+c
改成
search.php?keywords=a-b-c?
Gdj 2010-07-06
  • 打赏
  • 举报
回复
RewriteRule是包括路径和文件名的
你的^keywords=([^&]*) $1.html 明显是把这个当成是query串了吧?
Siramizu 2010-07-06
  • 打赏
  • 举报
回复
跳转要加R参数,普通rewrite都是不跳转内部处理的
wildlily980 2010-07-05
  • 打赏
  • 举报
回复
其实我的要求是:
用户输入
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的
Siramizu 2010-07-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 wildlily980 的回复:]

http://localhost/search.php?keyword=abc

http://localhost/abc.html
要求用rewriterule
不用rewritecond
谢谢
我是这样写的:RewriteRule ^keywords=([^&]*) $1.html
无效果
[/Quote]是什么意思?
访问search.php?keyword=abc时实际是访问abc.html吗?

rewrite的功能
是在访问a时,即用户输入a地址(浏览器显示的a),服务器端实际处理的是b请求,也就是a并不存在,用户看到的结果相当于直接访问b的结果
写作RewriteRule a b

lz这样感觉是跟平时需求反的,你既然要用户输入php了,直接在程序里面写个跳转好了,干嘛还搞rewirte呢
kyzy_yy_pm 2010-07-05
  • 打赏
  • 举报
回复
这就是从动态到静态
kyzy_yy_pm 2010-07-05
  • 打赏
  • 举报
回复
RewriteBase /
RewriteRule (.+)\.html /search.php?keyword=$1 [L]
wildlily980 2010-07-05
  • 打赏
  • 举报
回复
谢谢,不过都不起作用。还是没有跳转。
jlzan1314 2010-07-04
  • 打赏
  • 举报
回复
RewriteBase /
RewriteRule ^\?keywords=(.*?)(&.*)?$ $1.html [QSA,L]

没测试,随便写的。
wildlily980 2010-07-04
  • 打赏
  • 举报
回复
shelly先生,周日也不休息?
wildlily980 2010-07-04
  • 打赏
  • 举报
回复
您好像弄反了我的意思。
我用
#RewriteCond %{QUERY_STRING} ^keywords=(.*?)(&.*)?$
#RewriteRule ^.*$ %1.html
是可以实现我要的效果,可是由于某种原因,我不能使用rewriteCond
我要的是从动态页到静态页
mrshelly 2010-07-04
  • 打赏
  • 举报
回复
RewriteBase /
RewriteRule (.*).html /search.php?keyword=$1 [QSA,L]

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧