【问题标题】:How to remove last part of URL to avoid 404如何删除 URL 的最后一部分以避免 404
【发布时间】:2018-02-14 01:16:45
【问题描述】:

我知道有类似的问题,但情况并不相同。我正在寻找一种方法来删除不再存在但从某些外部来源链接到的 url 的最后一部分,以减少高 CPU 使用率。网址看起来像这样:

http://example.com/2018/12/05/article-name/removethis

其中 removethis 是需要删除以避免 404 错误的内容。我已经看到了将 url 的一部分更改为另一个的答案,但没有看到如何简单地从 url 的末尾删除特定的字符串。

我也在阅读 htaccess 文档,但它非常广泛,我无法想出一种方法来更改其他示例中的重写命令来满足我的需要。

感谢您的宝贵时间。

【问题讨论】:

    标签: wordpress .htaccess url


    【解决方案1】:

    我认为在这种情况下,您应该指定发生错误时需要的内容,并且从一个到另一个,然后使用特定的代码来处理它。例如,以下代码将逐级处理错误请求,但当然它仅限于/1/2/3/4/5,因此,将通过启动最新的一个等来处理更多的级别:

    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)/(.*)/(.*)/(.*)$
    RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)$         /$1/$2/$3/$4 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)/(.*)/(.*)$
    RewriteRule ^(.*)/(.*)/(.*)/(.*)$         /$1/$2/$3 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)/(.*)$
    RewriteRule ^(.*)/(.*)/(.*)$  /$1/$2 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)$
    RewriteRule ^(.*)/(.*)$ /$1 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteRule ^(.*)$  / [L,R]
    

    所以,如果article-name/ 目录存在,则请求http://example.com/2018/12/05/article-name/removethis 将是http://example.com/2018/12/05/article-name/,否则如果05/ 目录存在则转到http://example.com/2018/12/05/,依此类推。

    注意:上面的代码可以更概括为以下形式:

    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)/(.*)/(.*)/(.*)$
    RewriteRule ^         /%1/%2/%3/%4 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)/(.*)/(.*)$
    RewriteRule ^        /%1/%2/%3 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)/(.*)$
    RewriteRule ^       /%1/%2 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)/(.*)$
    RewriteRule ^         /%1 [L,R]
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteRule ^  / [L,R]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 2019-06-27
      • 1970-01-01
      • 2017-03-01
      • 2017-08-02
      • 1970-01-01
      相关资源
      最近更新 更多