【发布时间】:2021-08-24 16:16:35
【问题描述】:
我可以在命令提示符中使用一些特殊文本来读取带有php -S 服务内置在我的项目中的.htaccess 文件
例如:~/project> $ php -S localhost:8000 -read .htaccess 在我的项目中检查变量 $_GET['url'] 用于控制路由重定向到某个文件。
可能的方式?
我的小项目:
- 这是我的项目目录
project
|- src
|- index.php
|- .htaccess
-
.htaccess文件中的代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>
-
index.php文件中的代码:
<?php
$url = $_GET['url'];
if ($url == "hello") {
// go to hello file
} else {
// go to other file
}
?>
【问题讨论】:
-
对物理上不存在的文件的请求会自动路由到当前文件夹中的 index.php 或 index.html,如果都没有找到,它会继续检查父文件夹(参见 php.net/manual/en/features.commandline.webserver.php ) 你不会自动获得 GET 参数,你必须在 $_SERVER 中找到最初请求的 URL。
-
如果你实现了上面的,你可以在以后使用相同的逻辑,当整个事情在一个“真实的”网络服务器上运行时,使用 .htaccess 文件/可以重写。只需在没有任何参数的情况下重写 index.php,或者改用
FallbackResource指令。
标签: php .htaccess web-services