php - 有没有办法创建一个友好的 url 像 site.com/state/127 并且仍然指向一个特定的文件像 index.php
问题描述
我正在创建一个 rest api 端点来将数据输入数据库。我一直在尝试将 url 重写为这种格式http://example.com/src/public/endpoint/data
。url 中的 public 是一个文件夹,其中有一个 index.php 文件,所有 url 都将被路由到该文件,但它不起作用。下面是我的 .htaccess 代码。
RewriteEngine
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://example.com/src/public/index.php?path=$1 [NC,L,QSA]
当我期望时,我将链接地址http://example.com/src/public/?path=state/127&_=1579497796272
作为端点example.com/src/public/state/127
。我知道我没有正确地做某事,但我无法弄清楚。
解决方案
尝试这个 :
RewriteEngine On
RewriteCond %{THE_REQUEST} \?path=(.*)&(.*)\sHTTP.*$
RewriteRule ^(.*)$ /src/public/%1? [L,R]
RewriteRule ^src/public/state/127 /src/public/?path=state/127&_=1579497796272 [L]
首先,您应该添加on
之后RewriteEngine
,这意味着启用 mod_rewrite 。第二行将捕获请求并获取查询字符串的一部分。第三行将在外部重定向请求以使其友好。最后一行将在内部将一个新的重定向到正确的路径。
注意:如果没问题,改成R
永久R=301
重定向。
推荐阅读
- android - Android Studio:在布局更改为正确布局后加载 ImageView
- wordpress - 从 url 获取帖子 id 并将其提供给我的 wordpress 页面
- java - JUnit5 类参数化
- css - 在 sass 中混合两种颜色
- intellij-idea - IntelliJ 中 Java 代码方法模板中的类名
- vue.js - Vuex 模块状态在 Vue 路由器中有默认值
- android - 如何在 API 29+ 范围存储中列出我的应用程序创建的所有文件?
- c# - 相同的列表具有不同的排序,如何获得相同的排序?
- python - 在不使用 python 内存的情况下计算以下问题的有效和更快的方法
- html - 如何在 html 输入的边框中添加微小的中断