删除部分网址,但保持扩展名

时间:2016-08-19 10:41:33

标签: php html apache mod-rewrite

我的所有网站都按以下格式生成:

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

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

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

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

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

的文件
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]

答案 1 :(得分:0)

档案:.htaccess

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

问题:在.htaccess

的每个文件夹中,您必须有一个article---xxxxxx.html