相关疑难解决方法(0)

在自己的php框架中管理URL路由

我正在创建一个PHP框架,我有些疑惑......

框架以这种方式获取URL: http:/web.com/site/index

它需要第一个参数来加载controller(site)然后加载特定的动作(index).

如果您已经在基本URL中安装了框架,则可以正常工作,但如果您将其安装在如下的子文件夹中: http://web.com/mysubfolder/controller/action

我的脚本将其解析为controller = mysubfolder和action = controller.

如果你有更多的子文件夹,结果将是最糟糕的.

这是我的路线代码:

Class Route
{
    private $_htaccess = TRUE;
    private $_suffix = ".jsp";

    public function params()
    {
        $url='';

        //nombre del directorio actual del script ejecutandose.
        //basename(dirname($_SERVER['SCRIPT_FILENAME']));

        if($this->_htaccess !== FALSE):
            //no está funcionando bien si está en un subdirectorio web, por ej stynat.dyndns.org/subdir/
            // muestra el "subdir" como primer parámetro
            $url = $_SERVER['REQUEST_URI'];
            if(isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])):
                $url = str_replace("?" . $_SERVER['QUERY_STRING'], '',$url);
            endif;
        else: …
Run Code Online (Sandbox Code Playgroud)

php url frameworks routes

13
推荐指数
1
解决办法
7423
查看次数

使用PHP和regex自定义URL路由

我正在尝试创建一个非常简单的URL路由,我的思维过程是这样的:

  • 首先检查所有静态URL
  • 然后检查数据库URL
  • 如果两者都不存在则返回404

静态URL当然很容易做到,但我试图找出做动态URL的最佳方法.我宁愿不必设置静态前缀,尽管知道它会使代码更容易编写.

这就是我目前拥有的:

$requestURL = $_SERVER['REQUEST_URI'];

if ($requestURL == '/') {
    // do stuff for the homepage
}

elseif ($requestURL == '/register') {
    // do stuff for registration
}

// should match just "/some-unique-url-here"
elseif (preg_match("/([\/A-Za-z0-9\-]+)/",$requestURL)) { 
    // query database for that url variable
}

// should match "/some-unique-url/and-another-unique-url"
elseif (preg_match("(^\/[A-Za-z0-9\-]+\/[A-Za-z0-9\-]+)/",$requestURL)) {
    // query database for first and second variable
}

else {
    // 404 stuff
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我有"/ register"URI,它将匹配第二个elseif语句以及正则表达式语句.但我想避免必须从regex语句中明确排除每个静态URL,例如:

// should match just "/some-unique-url-here"
elseif ((preg_match("/([\/A-Za-z0-9\-]+)/",$requestURL)) && …
Run Code Online (Sandbox Code Playgroud)

php regex url-routing

2
推荐指数
1
解决办法
7975
查看次数

标签 统计

php ×2

frameworks ×1

regex ×1

routes ×1

url ×1

url-routing ×1