漂亮的URL没有mod_rewrite,没有.htaccess

Kri*_*iem 10 html php url .htaccess mod-rewrite

没有可能访问.htaccess我发现自己陷入了创造性的僵局.对我来说没有mod_rewriting.不过,我希望能够做到这样的好事:

http://www.example.com/Blog/2009/12/10/
http://www.example.com/Title_Of_This_Page
Run Code Online (Sandbox Code Playgroud)

我有什么选择?

回答答案:

  • 我正在用php5构建
  • 我无法访问.htaccess
  • http://www.example.com/index.php/Blog/是一种已知的技术,但我不喜欢它.显示php就这么说了.
  • 我如何创建无扩展的PHP文件?这会诀窍吗?
  • 使用自定义404技术会损害性能多少?

Phi*_*ber 11

如果您具有为服务器设置自定义错误文档的权限,则可以使用此权限重定向404请求.

例如Apache(http://httpd.apache.org/docs/2.0/mod/core.html#errordocument)

ErrorDocument 404 /index.php
Run Code Online (Sandbox Code Playgroud)

在index.php中,您可以使用$ _SERVER数组中的数据继续执行请求.

  • 返回的文档仍然具有HTTP 404状态,而不是200.这将导致Web爬虫的许多问题. (10认同)
  • 您不能POST(即,您可以,但数据将丢失)到错误文档脚本. (7认同)
  • @chaos:<?php header('HTTP/1.1 200 OK'); ?> (5认同)

Sho*_*oan 7

你也可以有网址

http://domain.com/index.php/Blog/Hello_World
Run Code Online (Sandbox Code Playgroud)

用PHP5开箱即用.然后,您可以使用读取URL参数

echo $_SERVER['PATH_INFO'];
Run Code Online (Sandbox Code Playgroud)

在应用程序中使用它们之前,请记住验证/过滤PATH_INFO和所有其他请求变量.


Nig*_*ton 5

我知道这个问题很老但我没有看到其他人提出这个可能的解决方案......

只需在URL的域部分后添加问号,即可以非常接近您想要的内容,即;

http://www.example.com/?Blog/2009/12/10/
http://www.example.com/?Title_Of_This_Page
Run Code Online (Sandbox Code Playgroud)

现在,上述两个HTTP请求都将由同一个PHP脚本处理;

www.example.com/index.php
Run Code Online (Sandbox Code Playgroud)

index.php剧本中,$_SERVER['REQUEST_URI']上面的两页将分别为;

Blog/2009/12/10/

Title_Of_This_Page

所以你可以随心所欲地处理它们.