你的问题有点模糊,所以我将集中讨论你提到的主要问题:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/.+\.html
RewriteRule ^/?([^/]+)$ $1.html [L]
替代做法:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/?([^/]+)$ $1.html [L]
如果这仅限于单个主机名(因为您的示例可能建议)取决于您的设置。如果您将规则放置在您的http服务器的真实主机配置中,而不是使用.htaccess
样式文件,则此类事情最容易完成。这也是为什么我添加的一般提示:
你应该总是喜欢在http服务器主机配置,而不是使用.htaccess
样式文件中这样的规则。这些文件出了名的错误,很难调试,他们真的放慢了服务器。它们仅提供作为的情况下最后的选择,你没有对主机配置控制(读:真的很便宜的托管服务提供商),或者如果你有依赖于写自己的重写规则(这是一个明显的安全恶梦的应用)。
在你写,你也想力短符号的评论,所以重定向用户请求一个URL这样的“文件扩展名”的版本没有。
我实在看不出任何一点这样的,但可以肯定的是可能的:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !^.
RewriteRule ^. - [L]
RewriteCond %{REQUEST_URI} ^/.+\.html$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/?(.+)\.html$ /$1 [L,R=301]
RewriteCond %{REQUEST_URI} !^/.+\.html$
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^/?([^/]+)$ /$1.html [L]
请问的问题更具体的方式。目前这个问题非常广泛而且很难回答。为什么你的_specific_问题?为什么不能简单地修改其中一个工作示例并根据需要进行调整? – arkascha