将所有RESTful请求重定向到域根,而不更改URL

时间:2015-04-01 18:11:09

标签: .htaccess rest http redirect

正如标题所说,我想要所有的请求

domain.com/something
domain.com/somethting/else
domain.com/a/third/thing

重定向到

domain.com

但仍然显示原始网址,因为我想将它们用作参数。我尝试了these two个提示,但网址最终显示

domain.com

1 个答案:

答案 0 :(得分:0)

我找到了答案here at Gareth Jones's blog

将所有请求传递到单个PHP脚本

我需要具有特定URL前缀的所有请求由单个脚本处理。使用.htaccess文件中的以下URL重写规则可以轻松解决此问题:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^.*$ index.php

请注意,我必须在Apache中启用mod_rewrite模块,并确保可以使用以下内容覆盖指令:

<Directory /var/www/>
  AllowOverride All
</Directory>

确定完整请求的网址

我的应用程序因URL重写而变得复杂的另一个要求是我需要访问完整的URL。我通过以下代码实现了这一点:

$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
$location = $_SERVER['REQUEST_URI'];
if ($_SERVER['QUERY_STRING']) {
  $location = substr($location, 0, strrpos($location, $_SERVER['QUERY_STRING']) - 1);
}
$url = $protocol.'://'.$_SERVER['HTTP_HOST'].$location;