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

时间:2017-12-28 09:58:39

标签: php apache mod-rewrite url-rewriting

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

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

http://www.website.com/notification

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

提前致谢

3 个答案:

答案 0 :(得分:0)

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

因此notification.php变为notification/index.php,您可以使用网址/notification/notification/访问它。

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

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

答案 1 :(得分:0)

HTML5介绍history.pushState()

  

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

示例: -

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

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

答案 2 :(得分: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