没有可能访问.htaccess我发现自己陷入了创造性的僵局。 对我来说没有mod_rewriting。然而,我希望能够做到这样的好事:
http://www.example.com/Blog/2009/12/10/
http://www.example.com/Title_Of_This_Page
我的替代方案是什么?
回答答案:
http://www.example.com/index.php/Blog/
是一种已知的技术,但我不喜欢它。显示php就这么说了。答案 0 :(得分:11)
如果您拥有为服务器设置自定义错误文档的权限,则可以使用此权限重定向404请求。
E.g。对于Apache(http://httpd.apache.org/docs/2.0/mod/core.html#errordocument)
ErrorDocument 404 /index.php
在index.php中,您可以使用$ _SERVER数组中的数据继续处理您的请求。
答案 1 :(得分:7)
你也可以有像
这样的网址http://domain.com/index.php/Blog/Hello_World
用PHP5开箱即用。然后,您可以使用
读取URL参数echo $_SERVER['PATH_INFO'];
在使用应用程序之前,请记住验证/过滤PATH_INFO和所有其他请求变量。
答案 2 :(得分:5)
我知道这个问题很老但我没有看到其他人提出这个可能的解决方案......
您可以通过在网址的域名部分之后添加问号来获得您想要的内容,即;
http://www.example.com/?Blog/2009/12/10/
http://www.example.com/?Title_Of_This_Page
上述两个HTTP请求现在都由相同的PHP
脚本处理;
www.example.com/index.php
在index.php
脚本中,上面两页的$_SERVER['REQUEST_URI']
将分别为;
Blog/2009/12/10/
Title_Of_This_Page
所以你可以随意处理它们。
答案 3 :(得分:3)
一个非常简单的方法是:
.htaccess
$_SERVER
解析查询,并查看它是否与任何结果相对应header()
将状态200替换为HTTP状态404并包括index.php 答案 4 :(得分:3)
如果省略尾部斜杠,Apache将按字母方式[按字母顺序]提供与该名称匹配的第一个文件,无论扩展名如何,至少在我有权访问的2台服务器上。
我不知道您如何使用它来解决您的问题,但在某些时候可能会有用。
例如,如果
http://www.somesite.com/abc.html
和http://www.somesite.com/abc.php
都存在且http://www.somesite.com/abc
已被请求,http://www.somesite.com/abc.html
将被投放。
答案 5 :(得分:2)
唯一的方法是使用自定义404页面。您无法使用PHP解释器解释无扩展文件,而无需重新配置Web服务器的MIME类型。但是你说你甚至不能编辑.htaccess,所以别无选择。
答案 6 :(得分:1)
您可以编写一个URI类来解析您定义的用户友好的URL。
答案 7 :(得分:0)
如果启用了MultiViews
选项,或者您可以说服拥有密钥的人启用它,您可以创建一个名为Blog.php的脚本,该脚本将被传递给example.com/Blog/foo
并获取'/ foo '在$_SERVER['PATH_INFO']
。