首页 > 解决方案 > 漂亮的 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 中尝试了与我的问题相关的每一个答案,但它们似乎对我有用。

标签: phplaravel.htaccess

解决方案


这就是我得到的,它在我的系统上工作:

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文件位于根目录


推荐阅读