.htaccess重写对子目录页面的特定请求

时间:2015-12-24 23:12:37

标签: php regex .htaccess url-rewriting

我正在努力学习如何正确地制作CMS并遇到一些问题。

文件夹结构:

    Root: (folder named learnCMS)
        admin (directory)
            index.php
        js (directory)
        css (directory)
        index.php
        .htaccess

这一切都在WAMP上,所以我的域名是 localhost / learnCMS /

现在,我正在尝试创建一个.htaccess文件,该文件会为此域名制作重写规则。到目前为止,我只需要两个规则,但我不能让其中一个工作,这就是我要问的原因。基本上我需要一个将重定向'的规则。任何访问如下: domain / admin + [anystring] 到子目录的index.php。基本上这个:

  1. domain / [anything]将转到root的index.php
  2. domain / admin [anything]会转到root / admin / index.php
  3. 抓住的是,它不能是一个完整的路径,所以我不能写出D:/ wamplocation / www / learnCMS / admin /

    这是我的.htaccess和徒劳的尝试,我得到一个错误,上面写着:
    "在此服务器上找不到请求的URL /admin/index.php。"

    
        RewriteEngine on
        RewriteRule ^admin /admin/index.php [QSA,L]
        RewriteRule ^([^./]{3}[^.]*)$ index.php?page=$1 [QSA,L]
    
    

    P.S。我是初学者,所以如果你能用易于理解的术语解释我会很感激。

1 个答案:

答案 0 :(得分:0)

严格来说,localhost是您的域名,而不是localhost/learnCMS。根据您告诉我们的内容,您的Web服务器的文档根目录是learnCMS目录的目录。我现在就叫它/path/to/parent

对于绝对URI(以/开头),Web服务器通过预先挂起文档根目录将URI路径转换为文件名。因此/admin/index.php URI会转换为/path/to/parent/admin/index.php文件名。正如错误消息所示,您的服务器上找不到此内容。

对于相对URI(不以/开头),Web服务器在预先挂起文档根之前包含子目录。为此,请使用..

RewriteRule ^admin admin/index.php [QSA,L]

/中的/admin/index.php已删除)

相关问题