1

我想设置.htaccess重写:

example.com/bla/info/

example.com/info/index.php?q=bla

example.com/bla/info/txt/

example.com/info/index.php?q=bla&t=txt

我希望浏览器仍然显示:

example.com/bla/info/txt/

我不想在 2 级重写中重写,例如:

example.com/bla/xxx/ 

或者

example.com/ccc/zzz/aaa/

example.com/silly/info/ 

会很好用

example.com/strange/info/mytxt/

这有意义吗?

有什么帮助吗?

4

2 回答 2

0

如果您的模式以 ^ 开头并以 $ 结尾,则该规则仅在整个字符串匹配时才适用。

RewriteRule   ^/bla/info/$      /info/index.php?q=bla
RewriteRule   ^/bla/info/txt/$  /info/index.php?q=bla&t=txt

如果您使用不使用 [R] 选项,则浏览器中显示的 URL 将是用户输入的任何内容。

您是否试图使这个通用?如果是这样,您可以使用正则表达式类型匹配和变量替换。要使 'bla' 匹配直到下一个斜杠 (/) 的任何字符串,请使用

([^/]+)

在您的模式中并在您的替换中用 $1 引用它。

RewriteRule ^/([^/]+)/info/$          /info/index.php?q=$1
RewriteRule ^/([^/]+)/info/([^/]+)/$  /info/index.php?q=$1&t=$2

我推荐有关 mod_rewrite 的 Apache 网页以获取更多信息。

[编辑。修复了规则,不包括模式中的主机名,正如原始海报所发现的那样。]

--
bmb

于 2009-01-09T21:19:54.823 回答
0

你让我走上了正轨。

我最终得到了这样的结果:

RewriteRule ^([^/\.]+)/info/?$ example/info/index.php?q=$1 [L]

多谢

于 2009-01-10T16:01:22.190 回答