将查询字符串参数重写为 URL Apache

Rewrite query string parameter into URL Apache

URL 进入 Apache:

localhost:8888/game?level=0

URL 应该来自 apache:

localhost:8888/level0/game

有人可以帮我创建这个重写吗?

尝试通过以下方式解决:

重写引擎开启
RewriteRule ^game\/+(.*?)\?+level=+([0-9]+) /level$2/$1 [L,QSA]

没有运气,因为它不匹配。

谢谢, 彼得

为了能够从查询字符串中捕获值,您需要一个 RewriteCond %{QUERY_STRING} 指令,以便捕获的组将在以下 RewriteRule 中用作 %n 占位符:

RewriteCond %{QUERY_STRING} ^level=(.*)$
RewriteRule ^game /level%1/game [L]

如果您在浏览器中输入 /game?level=0,apache 将打开 /level0/game;无需将查询字符串附加到重写的 url (QSA 标志)

您可以在 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On
RewriteBase /

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} /(game)\?(level)=(\d+) [NC]
RewriteRule ^ %2%3/%1? [R=302,L,NE]

# internal forward from pretty URL to actual one
RewriteRule ^(level)(\d+)/([^/.]+)/?$ ?= [L,QSA,NC]