使用 mod_rewrite 从 url 中删除页面 id

Posted

技术标签:

【中文标题】使用 mod_rewrite 从 url 中删除页面 id【英文标题】:Remove page id from url with mod_rewrite 【发布时间】:2016-03-05 09:07:00 【问题描述】:

我想从www.site.com/page.php?url=string.html转到www.site.com/string.html

我的 .htaccess 看起来像这样:

RewriteEngine On

RewriteRule ^([a-zA-Z0-9-/]+).html$ page.php?url=$1
RewriteRule ^([a-zA-Z0-9-/]+).html/$ page.php?url=$1

但它什么也没做。

【问题讨论】:

【参考方案1】:

尝试以下重写:

RewriteEngine On
RewriteCond %THE_REQUEST ^GET\ /cms/page\.php\?url=([^\s&]+) [NC]
RewriteRule ^page\.php$ /%1? [R=301,L]

RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^.*\.html$ /cms/page.php?url=$0 [QSA,L]

编辑

由于页面位于/cms 目录中,因此更新了规则以反映相同。

【讨论】:

还是什么都不做。可能是因为我在子域上测试它吗? - 测试域为:subdomain.site.com/cms/page.php?url=string.html 你先生!你拯救了我的一天,非常感谢。

以上是关于使用 mod_rewrite 从 url 中删除页面 id的主要内容,如果未能解决你的问题,请参考以下文章

从虚拟主机的 URL 中删除 Tomcat 上下文(mod_jk、mod_rewrite)

从 URL 中删除目录

从虚拟主机的URL中删除Tomcat上下文(mod_jk,mod_rewrite)

如何从 URL 中删除锚标记?

mod_rewrite:删除尾部斜杠(只有一个!)

使用 mod_rewrite 从 URL 的末尾隐藏 .php