php - Htaccess 隐藏文件扩展名并保持 $_GET 参数为 Access
问题描述
首先,我有两个文件,即 index.php 和 main.php,在这两个文件中我已经包含了 $_GET 参数,因此可以使用它来访问它
index.php?page=login
index.php?page=register&ref=1
main.php?page=member
main.php?page=member&edit
main.php?page=logout
通过使用 .htaccess 我想删除 .php 扩展名,但我想保留参数并使用新的 url 访问它
我做了这个代码
RewriteEngine On
RewriteBase /
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php?\?p=([^\s]+)? [NC]
RewriteRule ^ /%1? [R=302,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php?\?p=([^\s]+)&[A-Z]=([^\s]+) [NC]
RewriteRule ^ /%1?/%2? [R=302,L,NE]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ main.php?p=$1 [L,QSA]
是的,我只能使用http://ex.com/index和 main.php http://ex.com/main访问 index.php ,但请看一下这段代码
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=$1 [L,QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/?$ main.php?p=$1 [L,QSA]
当“index.php”规则位于顶部时,我可以访问http://ex.com/login或http://ex.com/register(index.php中的参数)但无法访问http:// /ex.com/member或http://ex.com/logout(main.php中的参数)
我想要的是通过使用参数来访问所有文件。谢谢
解决方案
这是要使用的代码
RewriteRule ^register/?$ index.php?p=register [L]
RewriteRule ^login/?$ index.php?p=login [L]
RewriteRule ^member/?$ main.php?p=member [L]
RewriteRule ^logout/?$ main.php?p=logout [L]
但是是的,参数可以通过某些东西或什么来访问。只是想了解更多。
推荐阅读
- node.js - 如何编辑从 multer 返回的路径以删除特定的单词?
- typescript - 您将如何使用 lambda 简化这段代码?
- c++ - 越界访问数组,但更早返回 - UB?
- python - 合并从递归函数返回的非常大的数组
- python - 如何将函数绑定到 Qt 菜单栏中的操作?
- google-sheets-api - Bings 广告脚本 - 调用 Google 服务不起作用
- google-apps-script - Apps 脚本:收集表单输入并显示今天的总数
- .net - Docker 容器立即退出并出现错误 145
- ruby-on-rails - 使用 Kramdown 进行降价时,Rails ATOM 编码无效
- python - 在 PySimpleGUI 窗口中插入图像作为背景