php-在网址中隐藏获取变量
作者:互联网
我有一个网址
localhost/index?id=2
我如何通过使用htaccess隐藏id部分并仅显示:
localhost/index/2
解决方法:
为了捕获查询字符串,您需要使用%{QUERY_STRING}或%{THE_REQUEST}:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# Redirect /index?id=2 to /index/2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\?id=([^&\s]+) [NC]
RewriteRule ^ /index?%1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$$1.php [QSA,L]
鉴于您没有其他可能与您的需求相冲突的规则,这应该可以正常工作.
确认其工作状态后,您可以从302更改为301,但是为了避免缓存,应始终使用302进行测试.
使用%{THE_REQUEST}的另一种方式是这样的:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# Redirect /index?id=2 to /index/2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\?id=([^&\s]+) [NC]
RewriteRule ^ /index/%1? [R=302,L]
# Internally forward /index/2 to /index.php?id=2
RewriteRule ^index/([0-9]+)/?$/index.php?id=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$$1.php [QSA,L]
标签:get,php,htaccess,url-rewriting 来源: https://codeday.me/bug/20191030/1967546.html