有没有办法重写我的网址:
http://www.website.com/notification.php
到
http://www.website.com/notification
我没有权限打开mod_rewrite,我们的组织也不想要它。有没有办法用PHP实现这个?
提前致谢
答案 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