我正在开发一种虚拟域名系统。我已经设置了一个通配符DNS作为*.loc
,并且我正在尝试修改我的.htaccess
文件。以下代码可行:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?example\.loc$ [NC]
RewriteCond %{REQUEST_URI} !^/example/
RewriteRule (.*) /example/$1 [L,QSA]
但是,我希望这个功能适用于我输入的任何内容。然而,我需要将%{REQUEST_URI}
与作为域名找到的文本进行检查。我尝试使用以下代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www.)?([a-zA-Z0-9-]*.)?([a-zA-Z0-9-]+)\.loc$ [NC]
RewriteCond %{REQUEST_URI} !^/%3/
RewriteRule (.*) /%3/$1 [L,QSA]
但是这行代码
RewriteCond %{REQUEST_URI} !^/%3/
会导致我的代码抛出内部服务器错误。我理解这是因为我的代码中的 %N,但有没有一种方法可以处理它?我需要这行代码,否则,我的代码会因为内部重定向而失败。希望有人能理解我的意思。我只需要能够在后续的 RewriteCond 中回溯引用一个 RewriteCond。