我目前有一个看起来与
相似的网址组合/的index.php?页=家里
我的网站使用简单的PHP通过索引运行所有代码。为了使它工作,我的index.php看起来像这样。
的
的<div id="wrapper">
<?php
// INCLUDING HEADER ON ALL PAGES
include("pages/header.php");
?>
<main> <!-- MAIN TAG !-->
<?php
$pageLoaded = array('home', 'header' , 'get-in-touch' , 'work' , 'main'); // LIST ALL PAGES
$page = ( isset($_GET['page']) ) ? $_GET['page'] : 'home';
if ( in_array($page, $pageLoaded) ){
include("pages/$page.php");
}
else {
include("pages/404.php");
}
?>
</main>
<?php
// INCLUDING FOOTER ON ALL PAGES
include("pages/footer.php");
?>
</div>
的
然后我的标题链接执行此操作以正确加载页面:
的
的<ul class="links">
<li><a href="index.php?page=home">HOME</a></li>
<li><a href="index.php?page=work">WORK</a></li>
<li><a href="index.php?page=get-in-touch">ABOUT</a></li>
</ul>
的
无论如何,我可以编写我的PHP以返回更好看的URL吗?
而不是index.php?
我非常感谢任何清理我的代码的建议,因为我是PHP的新手。
答案 0 :(得分:2)
在没有重写模块的情况下只使用PHP来回答,你可能只是简单地省略了索引页面,使用页面名称作为数组索引,并检查它是否已设置,但是您在网址中仍然有?
:
<div id="wrapper">
<?php
// INCLUDING HEADER ON ALL PAGES
include("pages/header.php");
?>
<main> <!-- MAIN TAG !-->
<?php
$pageLoaded = array('home', 'header' , 'get-in-touch' , 'work' , 'main'); // LIST ALL PAGES
$get_keys = array_keys($_GET); // find all the pages in url, in case of multiple
$matches = array_intersect($pageLoaded,$get_keys); // find matches
if(!empty($matches)) $page = $matches[0];
else $page = 'home';
if ( in_array($page, $pageLoaded) ){ // now redundant, may want to play with other ways of serving 404
include("pages/$page.php");
}
else {
include("pages/404.php");
}
?>
</main>
<?php
// INCLUDING FOOTER ON ALL PAGES
include("pages/footer.php");
?>
现在您的标题链接可能如下所示:
<ul class="links">
<li><a href="?home">HOME</a></li>
<li><a href="?work">WORK</a></li>
<li><a href="?get-in-touch">ABOUT</a></li>
</ul>
答案 1 :(得分:1)
将此代码放在你的index.php所在的.htaccess
中Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1 [L]
只是为了测试,在index.php中,尝试这样做,
<?php
$page = ( isset($_GET['page']) ) ? $_GET['page'] : 'home';
echo $page;
?>
并在你的page.php中
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<ul class="links">
<li><a href="http://localhost/test/home">HOME</a></li>
<li><a href="http://localhost/test/work">WORK</a></li>
<li><a href="http://localhost/test/get-in-touch">ABOUT</a></li>
</ul>
</body>
</html>
这必须导致三,家庭,工作或触摸
希望这会有所帮助。