【问题标题】:How to remove .html from the Friendly URL - Modx?如何从友好 URL 中删除 .html - Modx?
【发布时间】:2012-08-29 09:10:37
【问题描述】:

我正在使用 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 需要什么样的外观?

过去 20 分钟我一直在谷歌上搜索,但我的解决方案没有奏效。 谢谢

【问题讨论】:

    标签: html .htaccess modx modx-revolution


    【解决方案1】:

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

    MODX 革命

    2.2.x 及更早版本:转到System -> Content Types

    2.3.x 及更高版本:转到Content -> Content Types

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

    MODX 进化

    转到Tools -> Configuration -> Friendly URLs

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

    【讨论】:

    • +1 这是“MODX 方式”:比 .htaccess 解决方案更有效,允许“直接”访问资源,而不是对每个请求进行重写。如果存在指向以 .html 结尾的页面的现有外部链接,那么最好也使用 RewriteRule。
    • 我同意。这是一种直接的方法,无需复杂的 .htaccess 规则。
    【解决方案2】:

    这对我有用:

    # 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]
    

    【讨论】:

    • 没问题! [虽然如果没记错的话,我也从 stackexchange 问题中得到了这个:) ]
    【解决方案3】:

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

    它试图将所有进入站点的请求重定向到前端控制器位于 index.php。

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

    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^(.*)$ $1.html [L,QSA]
    

    此规则将接受http://domain.com/somepage 形式的请求,并让它静默指向http://domain.com/somepage.html 来处理请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多