【问题标题】:htaccess rewrite to index.php in variable directory (cms directory)htaccess 重写到变量目录(cms 目录)中的 index.php
【发布时间】:2014-05-06 19:33:49
【问题描述】:

我遇到以下问题: 我想构建一个脚本,它应该在每个目录中工作,无论是根目录还是子目录。所以最重要的是,我有一个 .htaccess 文件,它将 将所有请求重定向到安装脚本的目录中的 index.php。重定向很简单,有很多教程。但问题是我不知道脚本的安装路径。我不知道它是子目录还是根目录。我看到的唯一解决方案是制作一个 install.php,它将使用正确的路径修改 htaccess。但是有更好的解决方案吗?

谢谢!

更新: 由于我的问题显然存在误解,因此我将举一个例子。假设我的项目只包含一个 index.php 和一个 .htaccess 文件。 .htaccess 文件应将所有请求重定向到 index.php。这很简单,但是: .htaccess-file 不知道它会在哪个目录中被调用,所以它可能是用户将项目安装在 /xyz/ 也可能在根目录 / .如果我请求 xyz/abc/123/echo/world/ .htaccess 文件不知道 index.php 在哪个目录中进行重定向,它只知道它应该重定向到根目录的 index.php的脚本。所以我的解决方案是制作一个 install.php 并使用正确的路径更改 .htaccess 文件,但是没有更好的解决方案吗?

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    将此规则放在您的根 .htaccess 中:

    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+?/)?[^/]+$ /$1/index.php [L]
    

    这会将不是有效文件/目录的每个请求重写为该子目录的index.php

    编辑:如果您想将其放在/anydir/ 中,请使用:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::\2$
    RewriteRule ^(.*)$ - [E=BASE:%1]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . %{ENV:BASE}index.php [L]
    

    【讨论】:

    • 你误解了我的问题。您的脚本重定向到所请求目录中的 index.php。所以如果我请求 /directory/test/ 你的脚本会调用 /directory/test/index.php 但这是错误的!我的脚本将只包含一个未知目录中的 一个 index.php。请参阅我的帖子中的编辑以获取更多信息。
    • 您可能还没有明确您的要求。任何规则/代码如何知道那个未知目录在哪里?
    • 这就是问题所在。我的问题是,是否有比在安装过程中定义这个特定目录更好的解决方案。很多CMS确实有同样的问题,他们是如何处理的?
    • 没有 CMS 有这个问题,你要么弄错了,要么是 unknown directory 术语的其他意思。所有 CMS 框架都将它们的主要 .htaccess 文件放在一个众所周知的目录或 DocumentRoot 中,该目录可通过网络访问。
    • 我可以下载 Typo3 并将其安装到我选择的目录中,因此可以在 /mychoice/ 下找到它。所以 .htaccess 中的 mod_rewrite 可以完美运行。但是他们是怎么做到的呢?如果我需要 example.com/mychoice/mypage/subpage/ .htacces 文件不知道它是在根目录中还是在 /mychoice/ 目录中调用的,只要我不提供此信息。
    猜你喜欢
    • 2014-06-10
    • 1970-01-01
    • 2017-01-12
    • 2017-02-21
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2020-04-02
    • 2012-01-26
    相关资源
    最近更新 更多