Apache 子文件夹中静态文件的重写规则

Apache 子文件夹中静态文件的重写规则,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我的网站有以下文件夹结构: index.php .htaccess public_html/css/* (css files) public_html/images/* (image files) public_html/js/* (javascript files) 子文件夹public_html中的所有静态文件都链接到我的页面文件中,而不包含public_html:例如/images/logo/logo.png 我设置了以下.htaccess文件,该文件在本地apache和Web空间上运行

我的网站有以下文件夹结构:

index.php
.htaccess
public_html/css/* (css files)
public_html/images/* (image files)
public_html/js/* (javascript files)
子文件夹public_html中的所有静态文件都链接到我的页面文件中,而不包含public_html:例如/images/logo/logo.png

我设置了以下.htaccess文件,该文件在本地apache和Web空间上运行良好,但在客户Web空间上不起作用:

RewriteEngine On
RewriteBase /

RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f
RewriteRule ^(.*)$ /public_html/$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond ${REQUEST_URI} ^/public_html/
RewriteRule .* - [L]
RewriteRule ^ index.php [QSA,L]
这条线

RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f
必须重写为(2种可能性)

另外,在
RewriteRule
中的
public\u html
之前不需要前导斜杠
/
,因为您已经在
RewriteBase
中定义了它

那么这条线,

RewriteCond ${REQUEST_URI} ^/public_html/
必须重写为

RewriteCond %{REQUEST_URI} ^/public_html/
打字错误(将
$
替换为
%

结论

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} ^/public_html/ [NC]
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f
RewriteRule ^(.*)$ public_html/$1 [L]

RewriteRule ^ index.php [L,QSA]
这条线

RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f
必须重写为(2种可能性)

另外,在
RewriteRule
中的
public\u html
之前不需要前导斜杠
/
,因为您已经在
RewriteBase
中定义了它

那么这条线,

RewriteCond ${REQUEST_URI} ^/public_html/
必须重写为

RewriteCond %{REQUEST_URI} ^/public_html/
打字错误(将
$
替换为
%

结论

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} ^/public_html/ [NC]
RewriteRule ^ - [L]

RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f
RewriteRule ^(.*)$ public_html/$1 [L]

RewriteRule ^ index.php [L,QSA]

感谢您的更正,但更改不起作用。图像、css和js仍然丢失(404(未找到)消息)。您确定在您的客户Web空间上启用了mod_rewrite并且允许htaccess吗?我认为允许.htaccess,因为当我评论RewriteBase/行时,我会看到一个500错误页面。但我不确定,是否有其他apache设置阻止了正确的重写?!您能签入apache错误日志并重写日志吗?谢谢您的更正,但是更改不起作用。图像、css和js仍然丢失(404(未找到)消息)。您确定在您的客户Web空间上启用了mod_rewrite并且允许htaccess吗?我认为允许.htaccess,因为当我评论RewriteBase/行时,我会看到一个500错误页面。但我不确定,是否有其他apache设置阻止了正确的重写?!你能签入apache错误日志并重写日志吗?