PHP/Apache - 构建一个不同的URL,可以做到吗?


PHP/Apache - Building a different URL, can it be done?

我正在研究如何构建一个不同的URL,我想知道是否可以将PHP在URL中使用的查询字符串/问号符号(即"?")替换为其他内容?例如感叹号"!

www.example.com!foo=1

这可能吗?

当然,但你需要重写规则来告诉服务器如何为它们提供服务。PHP 不会自动为您解析它们,因此不会设置 $_GET/$_POST/$_REQUEST 变量,您必须从 $_SERVER['REQUEST_URI'] 开始自己解析它们。

不必为此使用 mod_rewrite,因为您仍然可以使用 $_SERVER["PATH_INFO"] 或 $_SERVER["REQUEST_URI"] 解释 url,具体取决于您的配置。只需在 !与爆炸并用parse_str解析它。如果这有意义,这是您的决定。

你也应该可以用htaccess替换它,但我无法测试它,因为我没有运行atm的apache。 一定是这样的。

RewriteEngine on
RewriteBase /
RewriteRule ^!(.*)$ http://domain.com/?$1 [R,NC]

如果这有效,请从规则中删除"R"。