【发布时间】:2013-11-16 02:23:35
【问题描述】:
我对删除子文件夹进行了大量研究,但是无法创建一个 .htaccess 规则来删除我的根目录中的所有子文件夹,示例如下:
www.domain.com/dan/dan 更改为 www.domain.com/dan
www.domain.com/pam/pam 更改为 www.domain.com/pam
www.domain.com/jam/jam 更改为 www.domain.com/jam
.htaccess 规则应该无限期地保持这种模式,而无需我将子文件夹的名称添加到我的规则中,有点像通配符条件或包罗万象的场景。
但是,有一个条件,如果文件与我在上面的示例中说明的名称相同,则仅删除子文件夹。
我使用的是 Apache 1.3.42,因此需要一个不适用于较新版本的解决方案。
在下面查看我的 .htaccess 文件,如您所见,我已经对其进行了很多 SEO 工作:
AddType application/x-httpd-php .html
RewriteEngine On
RewriteBase /
#non www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#removing trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]
#html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]
#index redirect
#directory remove index.html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.arkiq.com/ [R=301,L]
#directory remove index
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
RewriteRule ^index http://www.arkiq.com/ [R=301,L]
#sub-directory remove index.html
RewriteCond %{THE_REQUEST} /index\.html
RewriteRule ^(.*)/index\.html$ /$1 [R=301,L]
#sub-directory remove index
RewriteCond %{THE_REQUEST} /index
RewriteRule ^(.*)/index /$1 [R=301,L]
#remove .html
RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
如果您知道如何使用一条规则将所有子文件夹转发到它们各自命名的文件,请告诉我,因为那将是极好的。
【问题讨论】:
标签: apache .htaccess mod-rewrite