重写替代使用PHP而不是htaccess

时间:2017-01-31 22:25:22

标签: php apache .htaccess mod-rewrite url-rewriting

我正在使用一个index.php使用switch ...

目前我的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ index.php?page=$1 [NC,L]

通常我会满足于这个选项,但它最终会在其他东西的冲突中结束,我怎么能在php中将它复制到Apache上。

通过上面的文件格式https://example.com/index.php?page=about将每个案例转换为https://example.com/about

我找不到简单的指导以及如何在PHP中实现这一点,我知道这是可能的。

1 个答案:

答案 0 :(得分:0)

这是绝对不可能的。在某些时候,你必须告诉你的网络服务器如何处理请求,它不能自己猜测你正在运行一个PHP脚本。

Web应用程序的最佳做法是将每个请求映射到index.php(除非文件或目录存在),然后您可以代表您在应用程序中评估和路由请求,例如:这样的事情(来自laravel):

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

您不一定要在.htaccess中执行此操作,您也可以将其放在vhost配置中,或理论上也放在httpd.conf中。

我无法看到这可能会在任何冲突中结束,也许你可以解释一下你对此的担忧。