Regex 如何在htaccess重写规则正则表达式中添加点?

Regex 如何在htaccess重写规则正则表达式中添加点?,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我想创建我的url结构,比如dir view(example.com/dir1/dir2/file),我正在使用htaccess mod rewrite作为 RewriteEngine on RewriteBase / RewriteRule ^/?([a-zA-Z0-9\-=&_@/]+)/?$ get.php?u=$1 [QSA,L] 上面的代码运行良好,但如果我尝试添加点状 RewriteEngine on RewriteBase / RewriteRule ^/?([a-zA-

我想创建我的url结构,比如dir view(example.com/dir1/dir2/file),我正在使用htaccess mod rewrite作为

RewriteEngine on
RewriteBase /
RewriteRule ^/?([a-zA-Z0-9\-=&_@/]+)/?$ get.php?u=$1 [QSA,L]
上面的代码运行良好,但如果我尝试添加点状

RewriteEngine on
RewriteBase /
RewriteRule ^/?([a-zA-Z0-9\-=&_@/.]+)/?$ get.php?u=$1 [QSA,L]

.htaccess中断。“内部服务器错误”

您需要转义点
\。
,即:

RewriteEngine on
RewriteBase /
RewriteRule ^/?([a-zA-Z0-9\-=&_@/\.]+)/?$ get.php?u=$1 [QSA,L]

问题是,如果在模式中添加一个点,那么您的模式也会匹配目标urlget.php,并在第二个重写周期将get.php重写为get.php。这将导致无限循环/重写循环错误

您需要一个重写条件来防止此情况:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/get.php
RewriteRule ^/?([a-zA-Z0-9\-=&_@/.]+)/?$ get.php?u=$1 [QSA,L]

你需要转义它。不需要转义这个点。还有别的事情