Htaccess重定向到home为/但在目录上保留.index.asp

时间:2011-04-22 09:06:10

标签: php .htaccess

我需要一些htaccess文件的帮助:

Options -Indexes
Options +FollowSymLinks
DirectoryIndex index.html index.htm index.asp index.php
ErrorDocument 401 http://www.domainname.com
ErrorDocument 403 http://www.domainname.com
ErrorDocument 404 http://www.domainname.com
ErrorDocument 500 http://www.domainname.com
ErrorDocument 507 http://www.domainname.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domainname.com$
RewriteRule ^(.*) http://domainname.com/$1 [QSA,L,R]
RewriteRule ^(.*/)?index\.([a-zA-Z0-9]{3,4})$ /$1 [R=301,L]
RewriteRule ^(.*)\.htm$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index1.php?/$1 [L]
AddType text/html .html .htm .asp
AddType text/css .css
AddType image/vnd.microsoft.icon .ico
AddType image/jpeg .jpg
ExpiresActive on
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType image/vnd.microsoft.icon "access plus 3 months"
<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|xml|gz)$">
    Header append Vary Accept-Encoding
  </FilesMatch>
</IfModule>
# compress the files
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
# removes some bugs
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent

我的htaccess文件RewriteRule ^(.*/)?index\.([a-zA-Z0-9]{3,4})$ /$1 [R=301,L]中有这一行,它会将我在索引文件上收到的任何访问指向该文件的根目录,以便点击

http://www.domainname.com/index.asp将成为http://www.domainname.com/,这正是我想要的。但是,如果在具有索引文件的子文件夹中命中域,则它将仅显示目录而不显示页面名称:http://www.domainname.com/folder1/folder2/index.asp将变为http://www.domainname.com/folder1/folder2/,这不是我想要的。

如何修复它,以便RewriteRule ^(.*/)?index\.([a-zA-Z0-9]{3,4})$ /$1 [R=301,L]只会在http://www.domainname.com/index.asp上而不是在所有目录上重定向到根目录。

谢谢!

1 个答案:

答案 0 :(得分:1)

重写规则正则表达式的第一部分是匹配/(或不是)的任何内容。我们可以删除该部分,只是让它在根目录上生效。

RewriteRule ^index\.([a-zA-Z0-9]{3,4})$ / [R=301,L]