.htaccess文件扩展名删除无效(尝试了很多解决方案)

时间:2012-01-18 11:33:34

标签: apache file .htaccess webserver

我已经连续几天在Google上搜索,试图找到我的问题的解决方案,修补代码段无济于事。没有任何效果。我只想从我的URL中删除文件扩展名.shtml但NOTHING有效。我确保文件正在更新,我的网站没有从缓存加载,所有这些malarcky。有人能告诉我哪里出错了吗?

我能想到的只是我的网页寄存(Hostgator)没有启用Apache mod_rewrite?

RewriteEngine On

#Remove file extensions
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.shtml -f
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.shtml [L]

#Add trailing slash
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !#
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://mythofechelon.co.uk/$1/ [L,R=301]

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

代替您的扩展名删除代码改为使用此代码:

# To externally redirect /dir/foo.shtml to /dir/foo
RewriteCond %{THE_REQUEST} ^GET\s.+\.shtml [NC]
RewriteRule ^(.+)\.shtml$ /$1 [R=301,L,NC]

# To internally redirect /dir/foo to /dir/foo.shtml
RewriteCond %{REQUEST_URI} !\.shtml$ [NC]
RewriteCond %{REQUEST_FILENAME}.shtml -f
RewriteRule . %{REQUEST_URI}.shtml [L

添加尾随斜杠

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

但请注意,即使是http://domain.com/foo#aaa的URI也会变为http://domain.com/foo/#aaa,因为无法从mod_rewrite中检测#,因为这完全由浏览器处理。

答案 1 :(得分:0)

Options +MultiViews

做同样的事情。