用php删除url扩展名

时间:2015-05-30 06:12:01

标签: php redirect nginx

我在这里陷入困境......

目前我正在开设一个网站,并且有很多旧的网址需要重定向到它没有.stm扩展名的新网址。新网站正在运行Durpal。

实施例

http://www.foo.com/foo/bar.stm - > http://www.foo.com/foo/bar

所以我更加关注nginx.conf设置,在它甚至达到drupal正在使用的setting.php之前重写url。事实证明我的主机不允许我触摸根文件夹上的conf文件。但我唯一的解决方案是将其添加到root

中的conf文件中
server { location / { rewrite ^(.*)\.stm$ $1 permanent; } }

此时,我的选项已用完,但手动重定向Drupal中的每个页面(大约约650页)

我也尝试了所有其他模块,但非提供扩展条重定向。

我的另一个选择是使用404登录页面来运行php并使用.stm重定向任何网址,并使用没有.stm的刷新网址重定向,如果不是.stm网址,则保留在404。

这是我最好的选择,URL rewriting with PHP 但是对于扩展条和重定向而言,它过于复杂了吗?

1 个答案:

答案 0 :(得分:0)

您应该能够检查请求的URI是否包含" .stm",如果是,那么使用" .stm"重定向到完全相同的URI。撕开。在你的settings.php中添加这样的东西:

if (strrpos(request_uri(), '.stm') !== FALSE) {
    header("Location: " . str_replace('.stm', '', request_uri()));
    exit;
}