使用 mod_rewrite 从 url 中删除页面 ID

Remove page id from url with mod_rewrite

我想从 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=
RewriteRule ^([a-zA-Z0-9-/]+).html/$ page.php?url=

但它什么也没做。

尝试以下重写:

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=[=10=] [QSA,L]

编辑

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