.htaccess重定向,css / images不再加载

时间:2017-03-06 11:42:37

标签: .htaccess

我在一个名为'好友的文件夹中的托管帐户上有一个简单的HTML项目,其完整网址看起来像这样http://www.example.com/buddies/

我试图重写URL以指向这样的PHP文件;

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ((?:css|images|js)/.*)$ /$1 [L]

# About Us
RewriteRule ^about_us/what_we_do/?$ about-what-we-do.php [NC,L]
RewriteRule ^about_us/mission/?$ about-our-mission.php [NC,L]
RewriteRule ^about_us/team/?$ about-team.php [NC,L]
RewriteRule ^about_us/what_next/?$ about-what-next.php [NC,L]

# Classes
RewriteRule ^classes/learn/?$ classes-learn.php [NC,L]
RewriteRule ^classes/1to1/?$ classes-one-to-one.php [NC,L]
RewriteRule ^classes/swim_fit/?$ class-swim-fit.php [NC,L]

# Information
RewriteRule ^information/timetable/?$ info-timetable.php [NC,L]
RewriteRule ^information/contact/?$ info-contact.php [NC,L]
RewriteRule ^information/location/?$ info-locations.php [NC,L]

这可以很好地重定向到正确的PHP文件的URL,但是在这样做时,它打破了所有图像和css文件的链接。我理解为什么要这样做,css和图像文件夹不存在于路径中#about_us / what_we_do /'

如果这是在域的根目录中运行的,我只需要添加' /'到所有图像/ css文件的前面,即' /css/style.css'而不是他们目前如何引用&css / style.css'。

有人可以提出一种方法,我仍然可以从文件夹中提供服务css,图片和javascript,css','图片'和' js'?没有我必须在'伙伴之前文件夹到每个css /图像参考。

编辑:我正在引用这样的样式表;

<!-- Stylesheet -->
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/style-768.css">
<link rel="stylesheet" type="text/css" href="css/style-992.css">

2 个答案:

答案 0 :(得分:1)

使用<base href="http://www.example.com/">,以便将外部文件重定向到该目录。

答案 1 :(得分:1)

如果所有CSS文件都在/css目录中,您只需将每个文件重写到此目录

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (css/.*\.css)$ /$1 [L]

如果请求是RewriteCond,则/css/...可以避免重写循环。

类似于图片和Javascript文件。如果只查看目录

,您甚至可以将所有规则组合成一个规则
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ((?:css|images|js)/.*)$ /$1 [L]

这会查找以css/images/js/开头的任何请求。

如果CSS文件不在%{DOCUMENT_ROOT}/css,而是在%{DOCUMENT_ROOT}/buddies/css,则目标必须相应地加上前缀,例如

RewriteRule ((?:css|images|js)/.*)$ /buddies/$1 [L]