【问题标题】:Clean URL using .htaccess in PHP pages在 PHP 页面中使用 .htaccess 清理 URL
【发布时间】:2014-05-17 10:22:29
【问题描述】:

您好,我有一个名为finittra.com 的站点,所有菜单都与页面动态链接。我试图让网站像 CMS 一样。如果我单击关于菜单,则 url 显示 http://www.finittra.com/?page=about 并且如果我单击联系页面,则 url 显示站点 url /?page=contact 但我希望我想将 finittra.com/finittra/ 中的所有内容显示为文件夹或规范链接类型,对搜索引擎优化 url 友好。请有人在这里帮助我吗?

【问题讨论】:

    标签: php html apache .htaccess mod-rewrite


    【解决方案1】:

    您可能希望使用 .htaccess 重写您的 URL。你可以使用这个 mod-rewrite 生成器:http://www.generateit.net/mod-rewrite

    例子:

    RewriteEngine On
    RewriteRule ^([^/]*)$ /?page=$1 [L]
    

    但正确且有条理的方式是使用路由器,试试Aura.Router

    示例用法:

    $routes = [
        [
            "name"    => "My_route",
            "pattern" => "/{page}",
        ],
        [
            "name"    => "Another_route",
            "pattern" => "/pages/{page}",
        ]
    ];
    

    这是您的路由数组,路由器将遍历所有路由并检查给定的请求 url 是否与其中任何一个匹配。

    $factory = new RouterFactory;
    $router = $factory->newInstance();
    
    foreach ($routes as $route) {
        $router->add($route['name'], $route['pattern']);
    }
    
    $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    
    $match = $router->match($path, $_SERVER);
    if ($match) {
        $params = $match->params;
        echo $params['page'];
    }
    

    回显页面参数的 URL:http://www.finittra.com/about

    您需要对 POST 请求执行与 get 相同的操作,但您需要手动将它们添加到 url 路径。至少我是怎么做的。

    【讨论】:

      【解决方案2】:

      我会尝试类似的东西

      RewriteEngine On
      RewriteRule ^([a-zA-Z]+)/?$ index.php?page=$1 [L,NC,QSA]
      

      这会将每个finittra.com/xyz/(可见)重写为finittra.com/?page=xyz

      如果你想让你的页面有不同的名字,你必须手动完成,我猜。

      RewriteEngine On
      RewriteRule ^finittra/?$ index.php?page=contact [L,NC,QSA]
      

      另外,您必须调整网站上的链接

      【讨论】:

        【解决方案3】:

        您必须在项目中使用 .htaccess 文件,例如:

        .htaccess:

            Options +FollowSymLinks  
            RewriteEngine On  
        
            RewriteCond %{SCRIPT_FILENAME} !-d  
            RewriteCond %{SCRIPT_FILENAME} !-f  
        
        
           RewriteRule ^user/(\d+)*$ ./page.php?id=$1
        

        如果 url 请求 equl : http://www.finittra.com/user/123

        加载:page.php?id=123

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-10
          • 1970-01-01
          相关资源
          最近更新 更多