htaccess重写错误

问题描述 投票:0回答:1

我需要重写以下网址:

https://example.com/@example_user/
(带或不带结尾斜杠)到
https://example.com/main.php?user=example_user

https://example.com/@example_user/config/
(有或没有结束斜杠)
https://example.com/main.php?user=example_user&site=config

我正在尝试使用以下脚本:

RewriteEngine On

RewriteRule ^@([^/]+)/?$ main.php?user=$1 [L,QSA]

RewriteRule ^@([^/]+)/([^/]+)/?$ main.php?user=$1&site=$2 [L,QSA]

但是这种情况发生了:

  • https://example.com/@example_user
    <-Works fine
  • https://example.com/@example_user/
    <-rewrites wrong
    https://example.com/@/@example_user/
  • https://example.com/@example_user/config
    <-Works fine
  • https://example.com/@example_user/config/
    <-Rewrites wrong as
    https://example.com/@%251/%252

我尽了一切努力,但我缺乏更多的知识。

regex .htaccess mod-rewrite url-rewriting
1个回答
0
投票

我知道问题在于脚本如何处理尾部斜杠。所以我通过以下方式解决了这个问题:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [L,R=301]

RewriteRule ^@([^/]+)/?$ /main.php?user=$1 [L,QSA]

RewriteRule ^@([^/]+)/([^/]+)/?$ /main.php?user=$1&site=$2 [L,QSA]
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.