我想用php创建一个友好的url
我想为我的网站创建一个友好的url,这是我的代码 这段代码的问题是,当我单击“关于我们”链接时,url变成了localhost/php\u-friendly\u-url/about/12。这是正确的,但当我单击“主链接”时,url变成了localhost/php\u-friendly\u-url/about/main,你能帮我更正代码吗 请帮我解决我的问题 main.php我想用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
<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。就像“魔法老鼠”说的。