如何从友好的URL-Modx中删除.html?

如何从友好的URL-Modx中删除.html?,html,.htaccess,modx,modx-revolution,Html,.htaccess,Modx,Modx Revolution,我使用的是MODX Revolution 2.2.4-pl。我使用的是提供的.htaccess文件,并且打开了友好的URL。这是我的重写规则 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 要让它从URL中删除.HTML,它们需要什么样的外观 在过去的二十分钟里,我一直在用谷歌搜索这个问题,但我的解决方案没有奏效。

我使用的是MODX Revolution 2.2.4-pl。我使用的是提供的.htaccess文件,并且打开了友好的URL。这是我的重写规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
要让它从URL中删除.HTML,它们需要什么样的外观

在过去的二十分钟里,我一直在用谷歌搜索这个问题,但我的解决方案没有奏效。
谢谢

首先,我认为您需要了解这个.htaccess试图做什么

它试图将进入站点的所有请求重定向到位于index.php的前端控制器,这些请求不针对实际文件或目录(即图像、css或其他可能不属于“主”网站的脚本)

如果您试图在站点上使用一堆*.html文件(而不是前端控制器),但让它们使用干净的URL,那么您需要使用不同的重写方式。可能更像

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$ $1.html [L,QSA]
此规则将以的形式接收请求,并使其以静默方式指向服务请求。

这对我来说很有用:

# The Friendly URLs part
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]


RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
#RewriteRule . /index.php [L]

有一种更简单的内置方式。登录到管理器

MODX革命

2.2.x及更早版本:转到
系统->内容类型

2.3.x及更高版本:转到
内容->内容类型

查找HTML并删除“文件扩展名”中写入的内容。您可以通过双击表中的
.html
来激活可编辑字段。擦除内容后,清除缓存

MODX演进

转到
工具->配置->友好URL


删除“友好URL后缀”中的内容。保存并清除缓存。

+1这是“MODX方式”:比.htaccess解决方案更高效,允许“直接”访问资源,而不是每次请求都进行重写。如果存在指向以.html结尾的页面的外部链接,那么最好也使用重写规则。我同意。这是一种简单的方法,没有复杂的.htaccess规则。没问题![虽然如果记忆有用,我也是从stackexchange的问题中得到的:)]