在这篇文章中:htaccess add .html extension for urls with or without trailing slash我有99%的解决方案将slug重写为.html扩展名。
我的问题是,是否也可以制作
http://domain.com
动态?
index.php可能在子目录(IE.test / index.php)上运行也可能没有。
上述帖子的代码是:
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-l
RewriteRule ^(([\w/-]+)?[\w-])/?(?!:\.html)$ http://domain.com/$1.html [L,R=301]
RewriteRule ^(([\w/-]+)?[\w-])\.html$ test/index.php?slug=$1 [L]
PS:%{HTTP_HOST}似乎无法解决问题。
答案 0 :(得分:0)
这应该通过从目标URI中删除主机部分来实现:
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-l
RewriteRule ^(([\w/-]+)?[\w-])/?(?!:\.html)$ /$1.html [L,R=302,NC]
RewriteRule ^(([\w/-]+)?[\w-])\.html$ admin/index.php?slug=$1 [L,QSA,NC]
确保在测试之前清除浏览器缓存,并且没有其他规则。