名为css或js的页面URL不起作用

时间:2016-02-20 11:12:27

标签: .htaccess

在我的网站上,当我访问my-site.com/css或my-site.com/js等网址时,浏览器会显示文件夹列表,而不是保存在数据库中的实际页面。如果我在我的htaccess中使用Options All -Indexes那么它就是禁止的。我在htaccess中有以下规则来加载任何动态页面:

RewriteRule ^(.*)$ page.php?url=$1 [QSA,L]

由于我的项目中还有名为css和js的文件夹,所以我认为服务器显示目录内容而不是动态页面。我该如何防止这种冲突。我知道我是否使用了后缀" page"在我的页面名称之前,它可以整理出来,但我不想在页面网址之前使用任何参数。

修改

这是我完整的htaccess文件:

# my-site.com

Options +FollowSymlinks -MultiViews

#RewriteBase /

#Enable mod rewrite
RewriteEngine On

DirectorySlash off

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ page.php?category=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/([^/]+)$ page.php?category=$1&post=$2 [QSA,L]

1 个答案:

答案 0 :(得分:1)

由于/js/css是真实目录,因此您的重写规则不会执行,因为您有这样的条件:

RewriteCond %{REQUEST_FILENAME} !-d

表示不运行目录。

您可以将.htaccess调整为:

Options +FollowSymlinks -MultiViews
RewriteEngine On

# add a trailing slash to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule !/$ %{REQUEST_URI}/ [L,R=302]    

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ page.php?category=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/?$ page.php?category=$1&post=$2 [QSA,L]