删除"?"来自查询字符串

时间:2018-03-18 21:48:51

标签: mod-rewrite query-string

我已经决定抛弃Wordpress并转而转向Pico CMS

现在我正在努力正确地完成URL重写。

我设法从例如重写查询字符串。使用https://www.example.org?page https://www.example.org/pageRewriteRule ^(.*) ?$1 [L],但现在我还希望在 查询字符串时重写它。

示例:

如果请求https://www.example.org?page,则加载得很好,但我希望将其重写为https://www.example.org/page - 至少在位置栏中。

我尝试了几种变化,但无济于事。我吮吸正则表达式......

RewriteCond %{QUERY_STRING} !^$ RewriteRule ^\\?/(.*)$ $1

都能跟得上

RewriteRule (^\?$) https://tanghus.net/$1 [NC,R=301,L] RewriteRule ^.*$ https://tanghus.net/? [NC,R=301,L]

没有骰子

RewriteCond %{QUERY_STRING} . RewriteRule ^$ %{QUERY_STRING} [R,L]

Pfff

RewriteCond %{THE_REQUEST} \?\sHTTP [NC] RewriteRule ^ %{REQUEST_URI} [L,R]

放弃:(

1 个答案:

答案 0 :(得分:2)

您可以使用此规则

RewriteEngine on

# externally  redirect from /?page to /page
RewriteCond %{THE_REQUEST} /\?([^\s]+) [NC]
RewriteRule ^/?$ /%1? [L,R]
# internally map /page to /?page
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.+)$ /?$1 [L]