使用htaccess和PHP重写URL


URL Rewrite with htaccess and PHP

我有一个URL:search/?word=asdf,并希望重定向到:search/word/asdf/并在内部运行:?cmd=搜索&word=asdf

这样您就可以获得PHP$_get['cmd']和$_get['word']。

如何在htaccess中做到这一点?

编辑:

我的.htaccess现在是:

RewriteRule search(.*) %{HTTP_REFERER}cmd/search$1
RewriteRule cmd/search/?key-word=(.*) %{HTTP_REFERER}cmd/search/key-word/$1

但这不起作用。新的URL是:localhost/bruc/sandbox/electolux/trunk/cmd/search/?关键词=asdf

但它应该是:localhost/bruc/shadbox/electolux/trunk/cmd/search/key-word/asdf-

因此,我将这个正确的URL重定向到:localhost/bruc/ssandbox/electolux/trunk/?cmd=搜索&关键词=asdf

但工作不好!试试,我的方法是:http://htaccess.madewithlove.be/

尝试RewriteRule ^([^/]*)/word/([^/]*)$ /?cmd=$1&word=$2 [L]。我相信这将实现你的目标。

试试这个:

RewriteEngine on
RewriteRule ^search/word/(.*)$ /?cmd=search&word=$1 [L]

检查此项。

RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /?cmd=$1&word=$2 [L]

这有三个部分:

  1. RewriteRule指定这是一条重写规则(与条件或其他指令相反)。命令是将第2部分重写为第3部分
  2. 这部分是一个正则表达式,只有当URL与此正则表达式匹配时,才会运行该规则。在这种情况下,它说-寻找字符串的开头,然后是一堆非斜杠字符,然后是斜杠,然后是另一堆非斜线字符。然后是一堆非斜杠字符,然后是一个斜杠,然后是另一堆非斜线字符。括号表示括号内的部分将被存储以供将来参考
  3. 最后,这一部分说以这种格式重写给定的URL$1美元和2美元是指被捕获和储存的零件