我正在使用PHP开发一个简单的网站,并且一直试图将网址格式化为具有“漂亮”的网址。
目前,该站点未运行根目录;即不是来自“localhost”而是来自子目录,即localhost / resources / vuws /。因此,要链接到正确的文件,我已将“网站网址”定义为“http://localhost/resources/vuws/”。
因此:
define("SITEURL", "http://localhost/resources/vuws/");
这就是我将用户引导到不同页面的方式:
$title = 'vUWS';
$heading = 'Welcome';
$content = 'index.php';
$page = @$_GET['p'];
switch($page) {
case 'how-to-upload-a-file':
$title = 'How to upload a file';
$content = 'how-to-upload-a-file.php';
break;
case 'how-to-make-an-announcement':
$title = 'How to make an announcement';
$content = 'how-to-make-an-announcement.php';
break;
case 'how-to-add-teaching-staff':
$title = 'How to add teaching staff';
$content = "how-to-add-teaching-staff.php";
break;
}
然后在内容区:
<?php
require_once(dirname(__FILE__) . "/pages/$content");
?>
这是我尝试在htaccess中使用重定向但是它没有用。
RewriteEngine On
RewriteBase /resources/vuws/
RewriteCond %{SCRIPT_FILENAME} !-f [NC]
RewriteCond %{SCRIPT_FILENAME} !-d [NC]
RewriteRule ^(.+)$ index.php?p=$1 [QSA,L]
当我尝试访问“localhost / resources / vuws / how-to-upload-a-file”时,它只指向index.php。我相信它可能没有收到$ _GET ['p']的值,因此它没有输入switch语句,因此它使用$ content的默认值“index.php”。
如果我通过“localhost / resources / vuws /?p = how-to-upload-a-file”访问它,它可以正常工作。但是,如果我尝试“localhost / resources / vuws / how-to-upload-a-file”,它就不起作用。
目前,我不太确定如何处理此问题或更好的方法来调试此问题。
非常感谢任何帮助。
提前致谢,
约翰尼
PS:目前使用虚拟主机不是一个选项,它需要能够从子目录运行。