Geo*_*ber 1 apache .htaccess mod-rewrite
我的网站有以下文件夹结构:
index.php
.htaccess
public_html/css/* (css files)
public_html/images/* (image files)
public_html/js/* (javascript files)
Run Code Online (Sandbox Code Playgroud)
子文件夹public_html中的所有静态文件都链接到我的页面文件中,而没有public_html:例如/images/logo/logo.png
我设置了以下 .htaccess 文件,它在我的本地 apache 和我的网站空间上运行良好,但在客户的网站空间上,它不起作用:
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]
Run Code Online (Sandbox Code Playgroud)
这条线
RewriteCond %{DOCUMENT_ROOT}/public_html/%{REQUEST_URI} -f
Run Code Online (Sandbox Code Playgroud)
必须重写为(2 种可能性)
RewriteCond %{DOCUMENT_ROOT}/public_html%{REQUEST_URI} -f
# or
RewriteCond %{DOCUMENT_ROOT}/public_html/$1 -f
Run Code Online (Sandbox Code Playgroud)
此外,您不需要/在public_htmlin之前使用前导斜杠,RewriteRule因为您已经在RewriteBase.
那么,这条线
RewriteCond ${REQUEST_URI} ^/public_html/
Run Code Online (Sandbox Code Playgroud)
必须改写为
RewriteCond %{REQUEST_URI} ^/public_html/
Run Code Online (Sandbox Code Playgroud)
错字错误(替换$为%)。
结论
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]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2832 次 |
| 最近记录: |