HTACCESS 配置文件重定向正则表达式不替换
HTACCESS Profile Redirection Regex Not Substituting
我的目标是将请求特定个人资料的 URL 从 profile/name
形式重写为 PHP 脚本,该脚本会将 name
纳入自身并吐出此人的个人资料。为此,我使用以下语句:
RewriteRule ^profile/([^/]+) profile/view.php?username= [NC]
问题是无论我为 name
使用什么,它总是将我重定向到 profile/view.php?username=view.php
。我完全不知道为什么,并且尝试了一切都无济于事。我做错了什么??
重写引擎循环遍历所有规则,直到 URI 停止更改。因此,view.php
在下一次规则循环时匹配 ([^/]+)
正则表达式。
尝试添加一些条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([^/]+) profile/view.php?username= [L,NC]
编辑:一点解释
重写引擎循环,因此将请求 URI 视为某种变量。这个变量是重写规则的正则表达式所匹配的。
因此,如果您的规则很简单:
RewriteRule ^profile/([^/]+) profile/view.php?username= [NC]
这就是重写引擎要做的事情:
- URI =
/profile/myname
^profile/([^/]+)
是否与 URI 匹配?是
- 分组匹配 "myname" 并被规则的目标反向引用。
- URI =
/profile/view.php?username=myname
- 重写引擎循环
- 正则表达式匹配
/profile/view.php
吗? (注意,查询字符串不是重写规则中匹配的部分)是
- 分组与 "view.php" 匹配,并被规则的目标反向引用。
- URI =
/profile/view.php?username=view.php
- 重写引擎循环
- 除了 URI 不再更改之外,发生了同样的事情,因此重写引擎停止了
最终 URI:/profile/view.php?username=view.php
我的目标是将请求特定个人资料的 URL 从 profile/name
形式重写为 PHP 脚本,该脚本会将 name
纳入自身并吐出此人的个人资料。为此,我使用以下语句:
RewriteRule ^profile/([^/]+) profile/view.php?username= [NC]
问题是无论我为 name
使用什么,它总是将我重定向到 profile/view.php?username=view.php
。我完全不知道为什么,并且尝试了一切都无济于事。我做错了什么??
重写引擎循环遍历所有规则,直到 URI 停止更改。因此,view.php
在下一次规则循环时匹配 ([^/]+)
正则表达式。
尝试添加一些条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([^/]+) profile/view.php?username= [L,NC]
编辑:一点解释
重写引擎循环,因此将请求 URI 视为某种变量。这个变量是重写规则的正则表达式所匹配的。
因此,如果您的规则很简单:
RewriteRule ^profile/([^/]+) profile/view.php?username= [NC]
这就是重写引擎要做的事情:
- URI =
/profile/myname
^profile/([^/]+)
是否与 URI 匹配?是- 分组匹配 "myname" 并被规则的目标反向引用。
- URI =
/profile/view.php?username=myname
- 重写引擎循环
- 正则表达式匹配
/profile/view.php
吗? (注意,查询字符串不是重写规则中匹配的部分)是 - 分组与 "view.php" 匹配,并被规则的目标反向引用。
- URI =
/profile/view.php?username=view.php
- 重写引擎循环
- 除了 URI 不再更改之外,发生了同样的事情,因此重写引擎停止了
最终 URI:/profile/view.php?username=view.php