所以我有两个规则。每条规则都完全按照它自己的方式执行它应该做的事情.htaccess,但是当两个规则都存在时,它们开始相互冲突。
RewriteCond %{REQUEST_URI} ^(.*)\.html$
RewriteRule ^(.*)\.html$ index.php?id=$1 [QSA,L]
仅当数字结束时,上述规则才能正常使用http://domain.com/12.html(12注释文件不存在!)index.php .html12.html
RewriteCond %{REQUEST_URI} !^(.*)\.html$
RewriteRule ^(.*)$ /$1\.html [L,R=301]
这适用于检查 URL 是否以.html. 如果它没有以 结束.html,它会将其重定向到 URI + .html(这本身也可以正常工作)。
当我同时拥有两条规则时.htaccess
RewriteCond %{REQUEST_URI} ^(.*)\.html$
RewriteRule ^(.*)\.html$ index.php?id=$1 [QSA,L]
RewriteCond %{REQUEST_URI} !^(.*)\.html$
RewriteRule ^(.*)$ /$1\.html [L,R=301]
然后有一个循环导致重定向循环。
有人可以指出我哪里出错了吗?