如何在.htaccess中设置URL的目录作为索引参数?

vs91vp4v  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(96)

我试图获取URL中的最后一个目录名,并将其作为参数发送到子文件夹index.php。

e.g.

mydomain.com/mysubfolder/hi
to
mydomain.com/mysubfolder/?p=hi

.htaccess文件中的下一个代码重定向到index.php,但不更改URL,但参数不会被发送。

RewriteEngine on
RewriteRule ^([^/]+)/?$ index.php?p=$1 [L]

注意:.htaccess在“mysubfolder”中,而不是在根目录中。
我阅读了别人的帖子,但没有一个有效。
你知道为什么以及如何解决它吗?谢谢

编辑:

问题是,我试图在index.php文件中使用JavaScript获取参数:

//Get URL Params
const queryString = window.location.search
const urlParams = new URLSearchParams(queryString)
const URL_p = urlParams.get('p')

我不明白为什么JS不能捕获.htaccess参数($1 $2等),但是是的是从{QUERY_STRING} .htaccess获取参数
如果我用PHP请求获取参数,它就能正常工作:

<?php echo $_REQUEST[p] ; ?>
yc0p9oo0

yc0p9oo01#

要包含子文件夹,您需要有两个变量的regex

RewriteEngine on
RewriteRule ^(.*?)/(.*?)$ $1/index.php?p=$2

^(.*?)-将在变量$1中包含第一个直接子文件夹
/(.*?)$-子文件夹之后的任何内容将在变量$2

qpgpyjmq

qpgpyjmq2#

将RegEx更改为仅匹配URL的第二部分,而不是整个URL:

RewriteEngine on
RewriteRule ^[^/]+/(.*?)$ index.php?p=$1

.htaccess tester

相关问题