-1

我有以下文件树:

root
  -lib
  -config
  -public
      -img
      -css
      -js
      index.php
  .htaccess

.htaccess 位于根文件夹中。大多数请求应该重写为 public/index.php?request=$1,但这不是问题。

我想要另一个用于图像、css 和 javascript 的重写器(或者一般来说,/public 中的每个其他文件或目录):

代替

example.com/public/css/style.css 我希望该文件在 example.com/css/style.css

而不是

example.com/public/newfolder/randomfile.txt 我希望该文件在 example.com/newfolder/randomfile.txt

所以我必须保持这个摘要。

我无法使其正常工作,尤其是不能将这两种情况结合在一个 .htaccess 文件中。

这是不存在的文件/文件夹的基本 RewriteRule:

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

任何帮助,将不胜感激。

4

1 回答 1

1

你可以用 , 测试一下RewriteCond,如果有对应你的请求的真实文件,然后停止重写

RewriteEngine on

# real files
RewriteCond %{DOCUMENT_ROOT}/public/$0 -f
RewriteRule ^.+$ public/$0 [L]

# everything else
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L]

编辑:

如果 root 的子文件夹用作项目根目录:


RewriteEngine on

RewriteBase /subdir/

# real files
RewriteCond %{DOCUMENT_ROOT}/subdir/public/$0 -f
RewriteRule ^.+$ public/$0 [L]

# everything else
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php?request=$1 [QSA,L]
于 2013-04-08T07:42:06.670 回答