我想将请求附加到脚本中。
example.com -> example.com/d.php
example.com/css/style.css -> example.com/d.php/css/style.css
example.com/api/ShowPdf?bar=Foo -> example.com/d.php/api/ShowPdf?bar=Foo
等等。
我试过了
RewriteEngine On
RewriteRule /(.+) d.php/$1
这只适用于
example.com
。所有其他请求都会导致“Maximum number of redirect reached
”并且服务器返回错误 500。
我做错了什么?我怎样才能实现这个对每个请求都有效的简单重定向?
重写引擎循环工作。一次运行完成后,如果请求实际上已被重写,引擎将再次启动。您的模式匹配any请求,无论它已经被重写了多少次。所以这条规则被一次又一次地应用。你需要一些方法来打破这个循环:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/d.php
RewriteRule ^/(.+) /d.php/$1
或者,您甚至不必捕获实际的请求路径:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/d.php
RewriteRule ^ /d.php%{REQUEST_URI}
该表单可以在中央配置中工作(正如您当前所做的那样,在大多数情况下应该首选),但也可以在 distributed 配置文件(通常名为“.htaccess”)中工作,如果需要的话: