htaccess 未正确重定向多个虚拟子文件夹

htaccess is not redirecting multiple virtual subfolders correctly

这个问题是关于这两个问题的: and 但不需要阅读

所以我只想知道如何使用 htaccess[=] 在多个子文件夹启用 重定向 52=]。这是我当前的 htaccess 文件:

RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php [L]

顺便说一句:我删除了 index.html 中的整个基本路径元标记,因为它给我带来的麻烦比对我没有任何用处还要多。

基本上,网站正确显示在:

  • example.net
  • example.net/
  • 示例。net/about

无法正常工作

  • 示例。net/about/
  • 示例。net/about/创作者

那么我该如何更改 htaccress 文件,以便最后两个 URL 也被重定向到 index.html。我的意思是这里的问题是我认为 不是 SVG 问题,这是一个非常简单的 htaccess 问题

经过一些调查...

我发现重定向是正确的。只是所有外部 css、js 等文件都没有正确定位。

那我怎么用

<link rel="stylesheet" type="text/css" href="css/default.css" media="screen"/>

而不是

<link rel="stylesheet" type="text/css" href="http://localhost/css/default.css" media="screen"/>

没有基本路径元标记。如果我在我的代码中的任何地方更改相对于绝对路径,它就可以工作...

我知道它很奇怪。但是正如您所看到的,基本路径有利有弊。以及绝对路径和相对路径。

通过添加以下内容从重定向中排除您的 css、js 和图像文件。

RewriteEngine On 
RewriteBase /

RewriteCond %{REQUEST_URI} !^/(?:css|js|maps|pics) [NC]
RewriteRule (/(?:css|js|maps|pics)/.*)$  [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ index.php [L]