隐藏地址栏中的文件夹名称,但只有1个内部css页面链接不起作用

时间:2015-02-11 13:16:53

标签: .htaccess

我想通过.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]

1 个答案:

答案 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]