所以,我试图在我的.htaccess中有一个RegEx,它使用RewriteRule来重定向网站。
我的想法是重定向所有不是文件的URL,我曾经这样做:
RewriteRule ^([^\.]+)/?$ index.php?url=$1 [L]
此^([^\.]+)/?$
RegEx的问题是,当我想要重写时,无法重写如下URL:
1./用户名/我的用户名
1./profile/另一个.用户名
1./图片/部分.用户/最新
它运行得非常好,但是当用户在他们的用户名中使用点(.)时,它显然就停止工作了。我假设所有带有点(.)的URL都是文件,就像下面这样:
- /assets/image.png
- /index.html
我考虑的解决方案是添加一组我知道必须重写的URL,例如,如果包含**/username**、/profile、/picture
那么...我如何构建一个RegEx表达式:
1.只要不存在点(.),它就会匹配
1.或者,如果存在点(.),则应检查字符串中是否存在**/用户名**、/配置文件、/图片等单词。
我试着这样做:
[^\.]|([\S]+(\b\/(profile|username)\/)+[\S])?
但显然行不通
1条答案
按热度按时间bpzcxfmw1#
更简单的方法是像这样使用
RewriteCond
,以避免重写任何文件和目录,但让pattern匹配任何内容: