Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我想用php创建一个友好的url_Php - Fatal编程技术网

我想用php创建一个友好的url

我想用php创建一个友好的url,php,Php,我想为我的网站创建一个友好的url,这是我的代码 这段代码的问题是,当我单击“关于我们”链接时,url变成了localhost/php\u-friendly\u-url/about/12。这是正确的,但当我单击“主链接”时,url变成了localhost/php\u-friendly\u-url/about/main,你能帮我更正代码吗 请帮我解决我的问题 main.php <html> <body> <h1>Main P

我想为我的网站创建一个友好的url,这是我的代码

这段代码的问题是,当我单击“关于我们”链接时,url变成了localhost/php\u-friendly\u-url/about/12。这是正确的,但当我单击“主链接”时,url变成了localhost/php\u-friendly\u-url/about/main,你能帮我更正代码吗

请帮我解决我的问题

main.php

    <html>
      <body>
         <h1>Main Page</h1>
         <ul>
             <li><a href="main">Main</a></li>
             <li><a href="about/12">About US</a></li>
         </ul>
      </body>
    </html>
<?php
   include 'class/friendlyUrl.php'; 
   $url = new friendlyUrl('/php_friendly_url');

   if(!$url->segment(1))
       $page = 'main';
   else
       $page = $url->segment(1);

   switch($page) {    
   case 'main':

      include 'main.php';
      break;

   case 'about':

      include 'about.php';
      break;

   default:   
    echo '404 not found';
    break;
  } 
?>
<?php

    class {     
        var $site_path;         
        function __construct($site_path){           
            $this->site_path = $this->removeSlash($site_path);          
        }       

        function __toString(){          
            return $this->site_path;            
        }

        private function removeSlash($string){          
            if( $string[strlen($string) - 1 ] == '/' )              
                $string = rtrim($string, '/');  
                return $string;         
        }

        function segment($segment){         
            $url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
            $url = explode('/', $url);              

            if( isset($url[$segment]) ){                
                return $url[$segment];              
            }
            else                    
                return false;

            return $url;            
        }   
    }
?>

主页
index.php

    <html>
      <body>
         <h1>Main Page</h1>
         <ul>
             <li><a href="main">Main</a></li>
             <li><a href="about/12">About US</a></li>
         </ul>
      </body>
    </html>
<?php
   include 'class/friendlyUrl.php'; 
   $url = new friendlyUrl('/php_friendly_url');

   if(!$url->segment(1))
       $page = 'main';
   else
       $page = $url->segment(1);

   switch($page) {    
   case 'main':

      include 'main.php';
      break;

   case 'about':

      include 'about.php';
      break;

   default:   
    echo '404 not found';
    break;
  } 
?>
<?php

    class {     
        var $site_path;         
        function __construct($site_path){           
            $this->site_path = $this->removeSlash($site_path);          
        }       

        function __toString(){          
            return $this->site_path;            
        }

        private function removeSlash($string){          
            if( $string[strlen($string) - 1 ] == '/' )              
                $string = rtrim($string, '/');  
                return $string;         
        }

        function segment($segment){         
            $url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
            $url = explode('/', $url);              

            if( isset($url[$segment]) ){                
                return $url[$segment];              
            }
            else                    
                return false;

            return $url;            
        }   
    }
?>

friendlyUrl.php

    <html>
      <body>
         <h1>Main Page</h1>
         <ul>
             <li><a href="main">Main</a></li>
             <li><a href="about/12">About US</a></li>
         </ul>
      </body>
    </html>
<?php
   include 'class/friendlyUrl.php'; 
   $url = new friendlyUrl('/php_friendly_url');

   if(!$url->segment(1))
       $page = 'main';
   else
       $page = $url->segment(1);

   switch($page) {    
   case 'main':

      include 'main.php';
      break;

   case 'about':

      include 'about.php';
      break;

   default:   
    echo '404 not found';
    break;
  } 
?>
<?php

    class {     
        var $site_path;         
        function __construct($site_path){           
            $this->site_path = $this->removeSlash($site_path);          
        }       

        function __toString(){          
            return $this->site_path;            
        }

        private function removeSlash($string){          
            if( $string[strlen($string) - 1 ] == '/' )              
                $string = rtrim($string, '/');  
                return $string;         
        }

        function segment($segment){         
            $url = str_replace($this->site_path, '', $_SERVER['REQUEST_URI']);
            $url = explode('/', $url);              

            if( isset($url[$segment]) ){                
                return $url[$segment];              
            }
            else                    
                return false;

            return $url;            
        }   
    }
?>

.htaccess

<IfModule mod_rewrite.c>
   RewriteEngine On 

   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d

  RewriteRule ^(.*)$ index.php/$1
</IfModule>

重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php/$1

在codeigniter中,它具有相同的链接样式,我通过在所有链接前面添加来解决这个问题

<html>
  <body>
     <h1>Main Page</h1>
     <ul>
         <li><a href="<?php echo base_url(); ?>main">Main</a></li>
         <li><a href="<?php echo base_url(); ?>about/12">About US</a></li>
     </ul>
  </body>
</html>

有很多更先进的自我检测解决方案,如果上述内容不符合您的需要,我建议您使用谷歌找到合适的解决方案。

您只需在URL开头写“/”,如:

<ul>
    <li><a href="/main">Main</a></li>
    <li><a href="/about/12">About US</a></li>
</ul>
然后在所有链接中使用此常量:

<ul>
    <li><a href="<?php echo URL ?>/main">Main</a></li>
    <li><a href="<?php echo URL ?>/about/12">About US</a></li>
</ul>

  • 注意,如果网站位于根目录中,则HREF前斜杠中的正斜杠是好的。但是如果他正在使用多个项目,比如,/about/12将不起作用,因为它将链接到localhost/about/12,而不是localhost/supersecret\u project/about/12。你应该在链接之前使用你的网站url。就像“魔法老鼠”说的。