我想通过.htaccess隐藏地址栏中的文件夹名称,这意味着隐藏myfolder名称:http://www.myweb.com/myfolder/mypage但只有1个内部css页面链接不起作用。
我使用了从stockoverflow收集的以下代码,其隐藏文件夹名称很好,但内部页面链接不起作用。
其他人css和js链接也很好。
信息:我有2个css文件夹。一个是根目录,另一个是根目录 是myfolder目录。
内部网页链接:
All css and js page link like as
<link href="css/style.css" rel="stylesheet" type="text/css" />
Try 1:
<link href="../myfolder/css/style.css" rel="stylesheet" type="text/css" />
Also try 2:
<link href="http://www.myweb.com/myfolder/css/style.css" rel="stylesheet" type="text/css" />
我的htaccess
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+myfolder/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/$1 [L,NC]
答案 0 :(得分:0)
问题是,如果请求路径尚不存在,则以下规则仅将请求传递给/myfolder
内的文件。但是,由于根目录中也存在/css/style.css
,因此测试失败并抢占规则。
RewriteCond %{REQUEST_FILENAME} !-f # if not a file
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/$1 [L,NC]
解决此问题的最简单方法是重命名myfolder
目录中的文件夹或css文件。另一种方法是附加查询字符串标记,如
<link href="css/style.css?myfolder" rel="stylesheet" type="text/css" />
并在.htaccess中检查它
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{QUERY_STRING} ^myfolder$ [NC]
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/$1 [L,NC]