Apache 重写 - 将请求附加到脚本中

问题描述 投票:0回答:1

我想将请求附加到脚本中。

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。

我做错了什么?我怎样才能实现这个对每个请求都有效的简单重定向?

apache mod-rewrite
1个回答
0
投票

重写引擎循环工作。一次运行完成后,如果请求实际上已被重写,引擎将再次启动。您的模式匹配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”)中工作,如果需要的话:

© www.soinside.com 2019 - 2024. All rights reserved.