编程语言
首页 > 编程语言> > php-在网址中隐藏获取变量

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