尝试使用htaccess重写规则 - 不工作

时间:2017-08-17 01:16:51

标签: php apache .htaccess mod-rewrite

我正在使用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:目前使用虚拟主机不是一个选项,它需要能够从子目录运行。

0 个答案:

没有答案