我在顶层有一个index.php文件,其中包含名为includes的文件夹中的“login.php”,“register.php”等其他文件。文件夹层次结构如下所示:
index.php includes/ register.php login.php css/ style.css images/ image.png
如何将网址设置为http://www.mydomain.com/register,然后在index.php页面中调用(包括)register.php页面?
这是最好的方法吗?
由于
麦克
答案 0 :(得分:2)
好吧,只要URL存根(即/ register)总是与您要包含的文件名相同,就可以使用Apache的mod_rewrite
执行此操作。
但是,如果您想将URL存根更改为您要包含的文件名以外的其他内容,为什么不这样做:
// Get the URL stub:
$url_stub = $_SERVER['REQUEST_URI'];
define('INCLUDE_PATH', 'includes/');
switch($url_stub)
{
case 'register':
include(INCLUDE_PATH . 'register.php');
break;
case 'login':
include(INCLUDE_PATH . 'login.php');
break;
default:
// Output whatever the standard Index file would be here!
}
答案 1 :(得分:0)
使用mod_rewrite:
RewriteRule ^register index.php?page=register
RewriteRule ^login index.php?page=login
的index.php:
<?php
include('includes/'.$_GET['pagename'].'.php');
?>
编辑: 出于安全原因,请参阅下面的arnouds评论。
答案 2 :(得分:0)
您可以使用apache重写规则来执行此操作:(将此文件放在.htaccess文件中,与index.php相同)
RewriteEngine On
RewriteRule ^/register$ index.php?page=register
在index.php中:
$pages = scandir('includes');
if (isset($_GET['page'])) {
$page = $_GET['page'] . '.php';
if (in_array($page, $pages)) {
include $page;
}
}
答案 3 :(得分:0)
如果您的服务器是Apache: 在根文件夹文件“.htaccess”
上创建#.htaccess
RewriteEngine On
Options +FollowSymlinks
RewriteRule /register index.php?mode=register
//的index.php
<?php
if(isset($_GET['mode']=='register')){
include('includes/register.php');
}
?>
答案 4 :(得分:-1)
您可以使用以下内容编写.htaccess文件:
RewriteEngine On
RewriteRule ^([a-z]+)/?$ /index.php?include=$1 [PT,QSA]
和index.php文件:
include('includes/'.$_GET['include'].'.php');
当然,您可以根据需要调整此代码。