php - 删除获取请求的 url .php 扩展名和参数?
问题描述
我的网址是:
https://example.com/detail.php?id=56&subcat=11
我需要这样:
https://example.com/detail/56/11
使用 .htaccess 文件我无法删除参数名称(id、subcat)和问号(?)。我只删除了 .PHP 扩展名。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## don't touch /forum URIs
RewriteRule ^forums/ - [L,NC]
RewriteCond %{THE_REQUEST} \s/+products(?:\.php)?\?id=([0-9]+) [NC]
RewriteRule ^ products/%1? [R,L]
RewriteRule ^products/([0-9]+)/?$ products.php?id=$1 [L,QSA]
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} \s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
谢谢你。
解决方案
只需将以下内容放入您的 .htaccess 文件中(并确保启用了 mod_rewrite):
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]
RewriteRule ^index.php/([^/]+)/?([^/]*) /index.php?id=$1&subcat=$2 [NC]
推荐阅读
- angular - 服务构造函数调用了两次
- java - 颤振应用程序无缘无故崩溃:E / Surface(6317):queueBuffer:错误将缓冲区排队到SurfaceTexture,-22
- julia - Floatmax 未定义阻止我解决 MIP
- javascript - 转换数据时 obj[i] 在 javascript 中不可迭代
- excel - VBA 将整个数据集移动到不同的行和列中
- python - SQLAlchemy中与关联代理的自引用多对多关系
- powershell - 如何以与 PowerShell 脚本不同的用户身份运行 exe?
- ruby - Rspec 存根 current_user
- sql - 使用 Codeigniter 加入 Tables 进行计数
- .net-standard - 在 .NET Standard 上发射可收集 IL 的解决方案?