重写URL以在$ _GET变量中回显

时间:2014-08-13 09:02:04

标签: php .htaccess mod-rewrite

我正在关注YouTube教程(YouTube video),如果不解决此问题,则无法继续进行。我花了好几个小时试图解决它,并没有在哪里。

我要做的是将URL作为查询字符串传递,然后反馈到App函数中,即使它不存在也要回显。我写了一个.htaccess文件来重写一个URL,这样就可以做到这一点,但无论出于何种原因,它都不像视频节目那样工作。

理论上,我应该输入:localhost/mvc/public/a/b/c/d并让它回显a/b/c/d

这是我的.htaccess文件:

Options -MultiViews

RewriteEngine On

RewriteBase /localhost/mvc/public

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

这是功能:

public function __construct(){
    $this->parseUrl();
}

public function parseUrl(){
    if(isset($_GET['url'])){
        echo $_GET['url'];
    }
}     

2 个答案:

答案 0 :(得分:0)

我想知道当您尝试localhost/mvc/public/a/b/c/d时,发生了什么,例如,是否显示其他任何错误或警告?或者发生404错误?

也许是因为apache的配置?如果可能,请打开服务器上的重写模块(如果使用Apache):

对于Ubuntu:

sudo a2enmod rewrite
sudo service apache2 restart

对于其他操作系统:找到你的httpd.conf或任何其他apache的配置文件,并取消注释' LoadModule rewrite_module ......'行,然后重启apache服务器。

我建议您启用PHP的display_errors,这有助于您分析错误的位置。

答案 1 :(得分:0)

唷!!!解决了。问题是我的RewriteBase参数...对于视频路径是不同的我编辑它为我自己的目录,我认为是正确的......它适用于RewriteBase /mvc/public我的错误是" localhost& #34;在它之前。我想这已经在www文件夹中占了一席之地。

仅供参考,这涉及教程应用程序的极简主义路由功能。