【问题标题】:Remove part of url, but keep extension删除部分网址,但保留扩展名
【发布时间】:2016-08-19 10:41:33
【问题描述】:

我所有的网站都是按照以下模式生成的:

http://www.example.com/category/xyz/article---12345.html

我想使用 mod_rewrite 删除部分“---12345”,其中三个减号始终存在,但数字的数量从 3 到 7 不等。 html 应该留在那里,以便 url 看起来像这样:

http://www.example.com/category/xyz/article.html

我怎样才能做到这一点?

【问题讨论】:

  • 数字的作用不是区分独特的文章吗?
  • 当用户在地址栏中输入http://www.example.com/category/xyz/article.html时,您想向他们显示哪个页面?
  • 如果你想要更简洁的 url,你可以将 http://www.example.com/category/xyz/article/xxxxx 重定向到 http://www.example.com/category/xyz/article---xxxxx.html
  • 我认为您正在使用该数字部分停用文章,然后您可以将网址 example.com/category/xyz/article---12345.html 的结构更改为 example.com/category/xyz/12345/article.html
  • 数字不代表不同的文章,每篇文章都有自己的url,与数字无关

标签: php html apache mod-rewrite


【解决方案1】:

以下规则假定您请求的 html 文件不存在,并将它们重定向到新的 html 文件名。它将对任何 .html 文件执行此操作,而不仅仅是那些称为“文章”的文件。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{REQUEST_URI} ---
RewriteRule ^(.*)---(.*)$ "/$1.html" [R=301]

注意事项: 如果原始 .html 文件存在,则删除前两个 RewriteCond 规则。 如果您不想更改地址栏,请将 [R=301] 替换为 [L]

【讨论】:

    【解决方案2】:

    文件:.htaccess

    RewriteEngine On
    RewriteRule ^xyz/article---([0-9]{3,7}).html /xyz/article.html
    

    问题:您必须在article---xxxxxx.html 所在的每个文件夹中都有一个.htaccess

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 2021-07-11
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-07-29
      相关资源
      最近更新 更多