.htaccess管理文件夹的不同规则

时间:2012-12-23 03:41:48

标签: apache .htaccess mod-rewrite url-rewriting rewrite

我已经坚持了好几天。我想我在某个地方做错了但我不能让它为我的生活工作。

我正在使用codeigniter而我正在尝试将我的普通页面重写为:

website.com/folder/page.html using RewriteRule ^(.*)$ index.php/$1 [L]

哪个有效,但我试图让它不重写website.com/folder/admin/ folder

但是当我使用我的下面时,我会让它工作但是它会应用它

website.com/folder/page

website.com/folder/page.html

我不希望我只想要.html

<IfModule mod_rewrite.c>

RewriteEngine On
Options +FollowSymlinks
RewriteBase /folder/

# Don't rewrite admin urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^admin/
RewriteRule ^(.*)$ index.php/$1 [L,NC]

#Adds .html to urls without it
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^admin/
RewriteCond %{REQUEST_URI} !\.html
RewriteRule ^(.+)$ $1\.html [L]

#RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] 

</IfModule>

1 个答案:

答案 0 :(得分:1)

您要匹配的%{REQUEST_URI}变量不会观察到基数(/folder/),因此您必须在条件中与之匹配。所以而不是:

RewriteCond %{REQUEST_URI} !^admin/

你需要类似的东西(注意前导斜杠):

RewriteCond %{REQUEST_URI} !^/folder/admin/

或者只是放弃^

RewriteCond %{REQUEST_URI} !/admin/