.htaccess RewriteRule提供了不需要的$_GET参数

k4emjkb1  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(100)

我需要video/5成为video.php?id=5

RewriteRule ^video$ video.php [L]
RewriteRule ^video/([^/]*)/?$ video.php?id=$1 [QSA,NC,L]

基本上-上面的代码可以工作-但这里有一个问题:
video/-没有id-会给我一个空字串$_GET['id']
所以如果我写:
if(isset($_GET['id']))...-结果为true,值为""
如何避免这种情况?
我只需要video/-没有任何$_GET变量-除非它被显式设置-例如-video/5

deikduxw

deikduxw1#

使用您显示的示例,请尝试遵循htaccess规则。请确保在测试URL之前清除浏览器缓存。

RewriteEngine ON
##Internal rewrite to video.php without $1 in it.
RewriteRule ^video/?$ video.php [NC,L]

##Rules for internal rewrite with passing id query string to it.
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^video/([^/]*)/?$ video.php?id=$1 [QSA,NC,L]

相关问题