我有以下真实的 URL 结构
/folder/folder2/file1.php
/folder/folder3/file2.php
在哪里file1
并且file2
可以是任何 PHP 文件。
我也有
/folder/folder2/folder4/file1.php
/folder/folder3/folder4/file2.php
我想要的是更改 URL,使它们包含这样的 ID:
/folder/12345/folder2/file1.php
我想要做的是创建一个 mod_rewrite 规则来获取 ID 并运行任何没有 ID 部分的 URL
所以
/folder/12345/folder2/file1.php
会跑
/folder/folder2/file1.php?id=12345
执行此操作的 mod_rewrite 规则会是什么样子?
另外,当我以 POST 或 GET 形式提交表单时会发生什么?mod rewrite 可以与 post 或 get 一起使用吗?
根据您的问题,我假设您只想重写以下形式的 URL:
/folder/<id>/folder2/<anyfile.php>
/folder/<id>/folder3/<anyfile.php>
其中
folder
和是已知的子目录folder2
。folder3
但.php
文件可以是任何东西。(这不包括
/folder/folder2/folder4/file1.php
等/folder/folder3/folder4/file2.php
)<id>
也假定仅为数字(如您的示例中所示)。如果有其他限制,例如长度始终为 5 位,则也应包括在内。您可以使用 mod_rewrite 执行以下操作:
$n
是对模式中带括号的子RewriteRule
模式的反向引用。该
QSA
标志将从请求中附加查询字符串(如果有) - 如果您通过 GET 将表单提交到这些 URL 之一,则需要。GET 和 POST 请求都将被重写。