【发布时间】:2013-12-08 18:10:11
【问题描述】:
我决定使用干净的 url 构建一个 Web 应用程序。然而,起初它似乎很难。我在测试过程中遇到了很多问题,我基本上不知道建议如何构建干净的 URL。
我终于决定将所有内容重定向到 index.php 并从那里处理 URI。
这是我的 .htaccess 文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php?url=$0 [QSA]
在 PHP 端我已经创建了这个,所以只会传递数组中的 URL:
$root_path = '/';
$uri = $_SERVER['REQUEST_URI'];
$url = array(
$root_path . 'login' => 'login'
);
$url_basic = array_keys($url);
$url_slash = array_keys($url);
array_walk($url_slash, function(&$value, $key) { $value .= '/'; return $value;});
if (in_array($uri, $url_basic) || in_array($uri, $url_slash)) {
$uri = rtrim($uri,'/');
require $url[$uri] . '.php';
exit();
} else {
echo 'Bad';
}
所以基本上如果有人键入:/login 或 /login/,他们将拥有所需的 login.php,否则他们将停留在 index.php 页面上(因为 APACHE 会重定向其他所有内容)。
问题:
假设用户在尝试登录时收到错误消息。在这种情况下,我猜测最好的方法(或者如果它不是最好的方法,请告诉我)传递一个名为 ' 的 $_GET 变量错误'例如。所以用户会得到:/login/?error=1
怎样才能达到这个结果?因为如果我输入,我会被重定向到 index.php 页面。谁能帮帮我吗?
【问题讨论】:
标签: php apache .htaccess mod-rewrite clean-urls