我已经连续几天在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]
非常感谢帮助。
答案 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
做同样的事情。