当前位置: 首页 > 知识库问答 >
问题:

在子文件夹中重写规则

鲜于峰
2023-03-14

我有个问题。

有一个自定义mvc结构,当它是根文件夹时,一切都通过.htaccess中的RewriteRule工作,但如果我将它设置为子文件夹,它将停止工作。

.htaccess是

重写引擎在
重写条件%{REQUEST_FILENAME}-重写cond%{REQUEST_FILENAME}-d
RewriteRule^(.*)$index.php?route=$1[L,QSA]
AddDefaultCharset UTF-8
然后我更改了基并添加:
RewriteBase/mysubfolder/mysubfolder/

Cong文件:
ServerAdminroot@domain.com
DocumentRoot/var/www/rootfolder/

我尝试了一些重写规则的魔术,但似乎我缺乏知识。如果你能帮忙就太好了。

谢谢,对不起,我有点不舒服:)

共有1个答案

宰父淳
2023-03-14

太长,读不下去了

假设.htaccess文件未随MVC应用程序移动到子目录。。。

更新全局重定向线路:

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

到:

RewriteRule ^(.*)$ subdir/index.php?route=$1 [L,QSA]

对于大多数(如果不是PHP中的所有现代MVC框架),“所有”非文件路径(URL)都被设计为重定向到“index.PHP”文件。您可能会注意到这一行:

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

它的设计基本上是采用常规URL,例如。http://example.com/some/path 并将其重定向到http://example.com/index.php?route=some/path

它前面的两行表示:“如果URL不是文件请求”

RewriteCond %{REQUEST_FILENAME} !-f

"如果URL"不是对目录的请求"

RewriteCond %{REQUEST_FILENAME} !-d

然后重定向与regex:^(.*)匹配的任何内容,并将其重定向到目标路径

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

我假设您移动了项目(但不是. htaccess文件)。

假设上述情况,如果您将项目移动到子目录中,您需要更新目标路径,以便index.php路径是正确的。

例如

RewriteRule ^(.*)$ subdir/index.php?route=$1 [L,QSA]

--

要给出正则表达式的崩溃分解:

^ indicates the string must start with the string provided, e.g. ^apple would mean the string would only match if it starts with the word apple

$ indicates the string must end with the string provided, e.g. banana$ would mean the string would only match if it ended with the word banana

. indicates any character

* following the "." means any number of characters (1 to infinity, theoretically)

简言之,^(.*)表示几乎匹配所有内容!

 类似资料:
  • 有人能帮我为Apache重写以下内容吗?我想要的结果是: domain.com/(DB用户名所属的登陆搜索页) domain.com/db1/(用于db1的索引登录页,其中db1可以是任何其他db名称) domain.com/db1/accounts/(登录后) domain.com/db1/admin/(登录后的另一个页面) 请帮助我使用如果可能的话... 我有这样的东西,但它不起作用: `Op

  • 这个问题是本文的后续内容:Python-根据子文件夹和文件名重命名子文件夹中的文件。 我正在尝试遍历中子文件夹中的文件,并以指定的方式重命名每个文件。以下是我目前掌握的代码: 当我运行该行时,,它正确地显示保存在中的名为的文件将被重命名为。 但是,os.rename命令返回以下错误: "必须是字符串,而不是列表。" 这似乎是由于我在os.rename命令中使用了“文件名”。据我所知,os.rena

  • 我正在从www.example更改我的Drupal站点。com/demo到www.example。通用域名格式。js、css等资源仍然保存在“demo”文件夹下。实现此更改所需的重写规则或别名是什么? 我目前的电脑中有此设置。htaccess文件 选项下面符号链接 重写引擎在 重写康德%{DOCUMENT_ROOT}%{REQUEST_URI}-f[OR] 重写康德%{DOCUMENT_ROOT}

  • 我从我的IntelliJ Java 15 Gradle项目的resources文件夹中的子文件夹加载文件时遇到问题...

  • 我刚刚开始使用JSP,遇到了一个问题。 据我所知,WEB-INF下的JSP页面可以通过浏览器在localhost中使用URL进行访问: 但是,如果我在WEB-INF文件夹(即'MyFolder')中创建另一个子文件夹,并尝试通过URL访问相同的JSP页面: 它给出了一个错误404。JSP文件导航系统与HTML文件导航系统有区别吗? 编辑:我正在使用servlet来显示我的JSP页面: EDIT2:

  • 问题内容: 我想浏览当前文件夹及其所有子文件夹,并获取所有扩展名为.htm | .html的文件。我发现可以找到一个对象是目录还是文件,如下所示: 最后,我想将所有文件及其路径放在一个数组中。这样有可能吗? 问题答案: 您可以用来递归遍历目录及其所有子目录: 要构建这些名称的列表,可以使用列表理解: