获取PHP中的浏览器URL以获取重写的URL

斯内胡兹勒

我编写了一个宁静的api,它使用以下apache mod重写规则:

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteBase /api
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://example.com/api/index.php?request=$1 [L]
</IfModule>

但是,在控制器中,我发现我无法正确获取查询字符串。

当我尝试向https://example.com/api/search/article?mh=7发送请求后获取查询字符串时:(1)

$_SERVER['QUERY_STRING'] 

我得到以下结果:

request=search/article

当我尝试以下操作时:(2)

$_SERVER['REQUEST_URI']

我得到以下结果:

/api/index.php?request=search/article

我该怎么做以适当地使用mod重写并在我的api控制器中成功获取查询字符串?

注意:示例中的实际网址已更改。

贾斯汀·欧曼

假设您的htaccess位于/api/文件夹中,它应该看起来像这样

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
</IfModule>

注意:请勿http://在您的规则中使用,否则将是外部重定向。另外,请使用QSA标志来附加来自初始url的查询字符串。

从您的示例:https://example.com/api/search/article?mh=7将被重写为/api/index.php?request=search/article&mh=7


编辑:如果您希望http您的API的每个URL重定向到https等效

<IfModule mod_rewrite.c>
RewriteEngine on 
RewriteBase /api/

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/api/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [L,QSA]
</IfModule>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从浏览器获取URL

来自分类Dev

在jQuery的浏览器URL中获取QueryString获取请求

来自分类Dev

在jQuery的浏览器URL中获取QueryString获取请求

来自分类Dev

获取浏览器中显示的当前URL

来自分类Dev

如何在ajax文件中获取浏览器URL

来自分类Dev

如何获取Liferay当前在浏览器中显示的URL?

来自分类Dev

如何在Ajax文件中获取浏览器URL

来自分类Dev

如何在Chrome浏览器中获取框架的URL

来自分类Dev

浏览器不重写URL

来自分类Dev

使用JavaScript获取浏览器URL框内容

来自分类Dev

Webdriver MS Edge浏览器无法获取URL

来自分类Dev

使用python从浏览器获取当前URL

来自分类Dev

无法通过PHP CURL从URL获取JSON数据,但浏览器可以

来自分类Dev

如何在Phonegap 3.0中的InnApp浏览器中获取当前URL

来自分类Dev

如何在Node.js中的浏览器地址栏中获取URL

来自分类Dev

设置URL后如何从SWT中的浏览器获取HTML

来自分类Dev

ProxyPass和ProxyPassReverse-从浏览器地址栏中获取原始URL

来自分类Dev

MVC Ajax.BeginForm-成功获取请求后,在浏览器中更新URL

来自分类Dev

设置URL后如何从SWT中的浏览器获取HTML

来自分类Dev

Angular通过调用URL在浏览器中获取CSV文件

来自分类Dev

如何使用phantomjs浏览器在水豚中获取完整的URL以及哈希

来自分类Dev

Android Appcelerator从Webview中的远程URL获取URL并在设备默认浏览器或新的Webview中打开它

来自分类Dev

在PHP中获取唯一的Web浏览器ID

来自分类Dev

在PHP中获取唯一的Web浏览器ID

来自分类Dev

PHP Curl 从浏览器中的 URL 返回不同的结果

来自分类Dev

如何停止htaccess重写规则更新浏览器URL

来自分类Dev

htaccess用Wordpress重写以翻译url slug,但不显示在浏览器栏中

来自分类Dev

在浏览器中获取我的视频

来自分类Dev

上载到预设的S3 URL从浏览器获取403,但可以在curl中工作

Related 相关文章

  1. 1

    从浏览器获取URL

  2. 2

    在jQuery的浏览器URL中获取QueryString获取请求

  3. 3

    在jQuery的浏览器URL中获取QueryString获取请求

  4. 4

    获取浏览器中显示的当前URL

  5. 5

    如何在ajax文件中获取浏览器URL

  6. 6

    如何获取Liferay当前在浏览器中显示的URL?

  7. 7

    如何在Ajax文件中获取浏览器URL

  8. 8

    如何在Chrome浏览器中获取框架的URL

  9. 9

    浏览器不重写URL

  10. 10

    使用JavaScript获取浏览器URL框内容

  11. 11

    Webdriver MS Edge浏览器无法获取URL

  12. 12

    使用python从浏览器获取当前URL

  13. 13

    无法通过PHP CURL从URL获取JSON数据,但浏览器可以

  14. 14

    如何在Phonegap 3.0中的InnApp浏览器中获取当前URL

  15. 15

    如何在Node.js中的浏览器地址栏中获取URL

  16. 16

    设置URL后如何从SWT中的浏览器获取HTML

  17. 17

    ProxyPass和ProxyPassReverse-从浏览器地址栏中获取原始URL

  18. 18

    MVC Ajax.BeginForm-成功获取请求后,在浏览器中更新URL

  19. 19

    设置URL后如何从SWT中的浏览器获取HTML

  20. 20

    Angular通过调用URL在浏览器中获取CSV文件

  21. 21

    如何使用phantomjs浏览器在水豚中获取完整的URL以及哈希

  22. 22

    Android Appcelerator从Webview中的远程URL获取URL并在设备默认浏览器或新的Webview中打开它

  23. 23

    在PHP中获取唯一的Web浏览器ID

  24. 24

    在PHP中获取唯一的Web浏览器ID

  25. 25

    PHP Curl 从浏览器中的 URL 返回不同的结果

  26. 26

    如何停止htaccess重写规则更新浏览器URL

  27. 27

    htaccess用Wordpress重写以翻译url slug,但不显示在浏览器栏中

  28. 28

    在浏览器中获取我的视频

  29. 29

    上载到预设的S3 URL从浏览器获取403,但可以在curl中工作

热门标签

归档