我需要重写以下网址:
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 finehttps://example.com/@example_user/
<-rewrites wrong https://example.com/@/@example_user/
https://example.com/@example_user/config
<-Works finehttps://example.com/@example_user/config/
<-Rewrites wrong as https://example.com/@%251/%252
我尽了一切努力,但我缺乏更多的知识。
我知道问题在于脚本如何处理尾部斜杠。所以我通过以下方式解决了这个问题:
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]