从地址栏隐藏文件夹名称,但只有 1 个内部 css 页面 link 不起作用
Hide folder name from address bar but only 1 internal css page link not work
我想通过 .htaccess 隐藏地址栏中的文件夹名称,这意味着隐藏我的文件夹名称:http://www.myweb.com/myfolder/mypage 但只有 1 个内部 css 页面 link 不起作用。
我使用了从 stockoverflow 收集的以下代码,它很好地隐藏了文件夹名称,但内部页面 link 不起作用。
这里其他 css 和 js link 也工作得很好。
Information: I have 2 css folder. One is root directory and others one
is myfolder directory.
内页link:
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 (.*) \.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+myfolder/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/ [L,NC]
问题在于,如果请求路径尚不存在,则以下规则仅将请求传递给 /myfolder
内的文件。但是,由于 /css/style.css
也存在于根目录中,因此测试失败并抢占规则。
RewriteCond %{REQUEST_FILENAME} !-f # if not a file
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/ [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/ [L,NC]
我想通过 .htaccess 隐藏地址栏中的文件夹名称,这意味着隐藏我的文件夹名称:http://www.myweb.com/myfolder/mypage 但只有 1 个内部 css 页面 link 不起作用。
我使用了从 stockoverflow 收集的以下代码,它很好地隐藏了文件夹名称,但内部页面 link 不起作用。
这里其他 css 和 js link 也工作得很好。
Information: I have 2 css folder. One is root directory and others one is myfolder directory.
内页link:
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 (.*) \.php [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+myfolder/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/ [L,NC]
问题在于,如果请求路径尚不存在,则以下规则仅将请求传递给 /myfolder
内的文件。但是,由于 /css/style.css
也存在于根目录中,因此测试失败并抢占规则。
RewriteCond %{REQUEST_FILENAME} !-f # if not a file
RewriteRule (?!^myfolder/)^(.*)$ /myfolder/ [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/ [L,NC]