php - 漂亮的 url 通过删除 get 参数不起作用
问题描述
我想从 url 中删除 get 参数。例如普通网址
[https://apkleet.com/apk.php/?app=some_app][1]
我想要
的https://apkleet.com/apk/some_app
我尝试了什么我成功地从这个 htaccess 代码的 url 中删除了 .php 扩展名
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]
但是我没有成功从 url 中删除 get 参数,这是我迄今为止尝试过的代码
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^apk/(\d+)*$ ./apk.php?app=$1
这是我的完整 htaccess 代码 - 选项 +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{HTTP_HOST} ^m\.apkleet\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.m\.apkleet\.com$
RewriteRule ^(.*)$ "https\:\/\/m\.apkleet\.com\/$1" [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [NC,L]
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^apk/(\d+)*$ ./apk.php?app=$1
我在 stackoverflow.com 中尝试了与我的问题相关的每一个答案,但它们似乎对我有用。
解决方案
这就是我得到的,它在我的系统上工作:
RewriteEngine on
RewriteBase /
RewriteRule ^apk/(.+)$ apk.php?app=$1 [L]
所以在你放的网址栏上: https ://apkleet.com/apk/some_app
它加载: https ://apkleet.com/apk.php?app=some_app
--
前提是该apk.php
文件位于根目录
推荐阅读
- java - 如何在 Java 中区分 RUNNING 状态和 java.lang.Thread.State.RUNNABLE
- javascript - Python Selenium:按下按钮时网页加载时间不一致?
- javascript - 你如何将四张卡片包裹在一张居中的卡片上?
- python - 为什么它无法使用 flask_sqlalchemy。mysql 和 flask 的版本都是最新的。我可以通过pymysql连接和执行
- selenium - 无法在 PATH 中找到 chromedriver,或者在显式提供给 webdriver.Chrome() 时
- spring-boot - spring cloud项目前端显示404
- c# - 将 XML 文件绑定到 ListBox 后,项目不显示
- c - 计算 C 函数的源代码长度
- javascript - 在 promise 语法之前无效
- docker - Makefile 多行命令在 Docker 中无法正常工作