我在使用PHP进行的项目中遇到了问题,并且在URL中。
当我加载像index.php这样的脚本时,一切正常,问题是当我加载一个位于两个或多个目录中的脚本时。
在URL中,包含路由的脚本开始被嵌入
这是我遇到的问题的一个例子
我需要加载一个脚本,即使它在几个嵌套级别中,使其功能和在url中反映为:
我需要这样的东西
1: 我提前谢谢你。
此致
答案 0 :(得分:0)
您无法使用PHP来实现此目的。 PHP不负责确定PHP(让特定的PHP脚本)处理任何给定的URL。
您必须配置您的网络服务器才能执行此操作。既然你提到.htaccess但没有提供有关你的服务器的更多信息,我将假设你正在使用Apache HTTPD。
对于Apache,这意味着使用mod_rewrite,Alias或类似的东西。您可以将这些工具的配置放在.htaccess
中,但您不想和the documentation advises not to use them。
所以将你的mod_rewrite或Alias配置放在主Apache配置中。
答案 1 :(得分:-1)
无论如何,您都需要htaccess
规则。但是,它不必是mod_rewrite
规则。您需要此规则的原因是因为PHP不负责路由 - 它只负责脚本的执行。
规则的要点是指导apache并指示它执行正确的脚本(在您的情况下为script32.php
),同时尽可能保持请求的完整性。
基本上有两种方法。
mod_rewrite
这非常简单,您需要的规则集如下:
# If the requested file name is a valid file/inode
RewriteCond %{REQUEST_FILENAME} -f [OR]
# ...or a directory
RewriteCond %{REQUEST_FILENAME} -d
# ...then throw them straight on it
RewriteRule (.*) - [L]
# ...otherwise, redirect to script32.php with the full content of the request in query string
RewriteRule (.*) /welcome/script32.php?$1 [L]
请求的网址现在位于$_SERVER['QUERY_STRING']
,您现在可以在PHP中使用它执行任何操作
这不依赖于mod_rewrite
,因此可能会稍快一些。但是,从技术上讲,它是一个廉价的黑客。解决方法如下:
ErrorDocument 404 /welcome/script32.php
现在可以在$_SERVER['REQUEST_URI']
中找到请求的URL,并且可以在PHP中进行解析。然而,有了这个,你也已经禁用了#34; legal"通过apache生成404错误 - 并且应该确保在PHP中遵循正确的行为来补偿。