我正在处理我网站中的一个子文件夹。该文件夹中的 .htaccess 包含以下两行:
RewriteEngine on
RewriteRule ^(.*)$ page.php?id=$1 [L]
我的子文件夹中的 php 文件包含以下代码:
print_r($_GET);
当我转到以下页面时:
https://www.example.com/subfolder/ddd
我在屏幕上看到以下内容:
数组([id] => page.php)
我想要的是:
数组([id] => ddd)
我做错什么了?
请记住,“L”标志仅终止当前循环的重写。这是记录的行为。
如果请求被任何规则重写,重写将重新开始。在这里,它确实从 重写为
ddd
,page.php?id=ddd
因此在重写过程的下一个阶段, 将被重写为page.php?id=page.php
。这不会导致请求更改(page.php
未更改)。因此重写停止,您将获得结果。您有两个直接的选择:
1.)使用
END
标志代替标志L
:2.) 使用附加的
RewriteCond
: