有没有办法在不使用mod_rewrite和.htaccess的情况下重写我的网址?

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

有没有办法重写我的网址:

http://www.website.com/notification.php

http://www.website.com/notification

我没有权限打开mod_rewrite,我们的组织也不想要它。有没有办法用PHP实现这一点?

提前致谢

php apache mod-rewrite url-rewriting
3个回答
0
投票

如果您只有几页,则可以重命名文件index.php并将其移动到具有所需名称的目录中。

所以notification.php成为notification/index.php,你可以用网址/notification/notification/访问它。

这种方法的缺点是,你得到一个混乱的文件夹结构,每个文件都被命名为index.php。你可以绕过后面的问题,如果你在每个文件夹中放置某种包装文件,它调用实际的脚本 - 但文件夹结构保持不变。


另一种方法是使用某些伪重写与?开头的url。所以你可以调用访问你的文件,如website.com/?notification。在这种情况下,您必须将所有路由逻辑放在位于index.php/中。关于这一点的好处是,你的网址保持灵活,你不必创建一些奇怪的文件系统结构。不好的是,你必须在每个网址中保留问号。


0
投票

HTML5介绍history.pushState()

pushState()接受三个参数:状态对象,标题(当前被忽略)和(可选)URL。

示例: -

网址: - http://www.website.com/notification.php

window.history.pushState('notification.php', 'Title', 'notification');

0
投票

我相信你可以“简单地”做到这一点:

<Location "/notification">
  SetHandler application/x-httpd-php
</Location>

如果你这样做,我希望你使用灵活的请求路由器,因为你将使用REQUEST_URI很多。由于apache不会费心寻找文件或其他任何东西AFAIK,所以你必须自己返回静态资源(图像,样式表,js等)。

无论如何,您似乎可以在.htaccess文件中使用它,因此您不需要打扰服务器的主配置。

见:https://httpd.apache.org/docs/2.4/mod/core.html#sethandler

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