修改重写PHP并将值发送到.htaccess

fivyi3re  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(118)

我使用.htaccess代码重写URL:

RewriteEngine On  
RewriteBase /test_2/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^register test_rewrite.php?action=reg&send=ik&mode=insert [L,NC]

我的想法是在PHP中对不同的文件使用不同的规则,例如对于search.phpblog.phpusers.php,在每种情况下使用特定的规则。
同样在同一个文件的每个URL中,例如users.php,我发送不同的参数,在某些情况下使用字符串作为action,mode,或者简单的action来发送URL中的值,就像创建没有URL友好的PHP脚本时最传统的用法一样。
这种情况下,我需要发送不同的值,并检测这些值内.htaccess重写,最自动的可能.
我想可以把无限的斜线为同一个URL,例如search/test/test1/test1,没有得到错误404,实际上这工程,如果我只使用前缀,但需要检测值从PHP的URL发送
我的想法是创建一个规则来检测我发送的值,例如,URL

RewriteRule ^register test_rewrite.php?action=reg&send=ik&mode=insert

其思想是^register将get的所有值都作为$_GET接收,就像我在示例中输入until

例如:

如果我的URL是insert.php?action=reg&send=ik&id=123,id在每种情况下都是不同的,我想发送到.htaccess作为URL/test_2/register/123,我如何才能做到这一点?
最后,我真的希望get可以把URL与不同数量的斜线,可以显示为友好的没有收到404错误和发送的值。

ogq8wdun

ogq8wdun1#

你的问题有点难以理解,但我想给予。
如果我理解正确的话,那么您正在寻找一种方法,让规则捕获单个(这里是数字)参数,同时您希望忽略任何前缀路径,直到您希望在规则中匹配的某个关键字。
这可能会让你走上正确的轨道:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?:^|.*/)register(?:/(\d+))$ insert.php?action=reg&send=ik&id=$1 [END]

这会将所有这些请求重写到同一个目标:
https://example.com/register/111 =〉/insert.php?action=reg&send=ik&id=111
https://example.com/foo/register/222 =〉/insert.php?action=reg&send=ik&id=222
https://example.com/foo/bar/register/333 =〉/insert.php?action=reg&send=ik&id=333
你当然需要修改这个,使它适应你的具体需要。所以没有什么你可以盲目复制。

相关问题