.htaccess:重写url,一个变量到目录

.htaccess:重写url,一个变量到目录,.htaccess,url-rewriting,.htaccess,Url Rewriting,我想知道是否可以通过一些htaccess规则来实现这一最终结果 在配置文件夹中。其中*是要显示为文件夹的页面名称 /projectdir/config/?p=* or /projectdir/config/index.php?p=* to /projectdir/config/*/ 范例 /projectdir/config/?p=page1 => /projectdir/config/page1/ /projectdir/config/index.php?p=page1 => /

我想知道是否可以通过一些htaccess规则来实现这一最终结果

配置文件夹中。其中*是要显示为文件夹的页面名称

/projectdir/config/?p=* or /projectdir/config/index.php?p=*
to /projectdir/config/*/
范例

/projectdir/config/?p=page1 => /projectdir/config/page1/
/projectdir/config/index.php?p=page1 => /projectdir/config/page1/
我尝试了有问题的代码,但没有结果

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w\d~%.:_\-]+)$ index.php?p=$1 [NC]
这基本上是:


您可以在
/project/config/.htaccess
中使用此代码:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /project/config/

RewriteCond %{THE_REQUEST} /config/(?:index\.php)?\?p=([^\s&]+)&p2=([^\s&]+)\s [NC]
RewriteRule ^ %1/%2? [R=301,NE,L]

RewriteCond %{THE_REQUEST} /config/(?:index\.php)?\?p=([^\s&]+)\s [NC]
RewriteRule ^ %1? [R=301,NE,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?p=$1&p2=$2 [L,QSA]

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

你能分享一下你迄今为止的尝试吗?谢谢。@starkeen我尝试了问题中发布的代码(第一个代码块),但没有结果。请编辑您的问题以发布您尝试过的内容。@starkeen确定,问题已更新您在浏览器中键入的url以及发生了什么事?谢谢,但它不起作用。使用此代码,结果如下:
ip/project/config/?p=page1
=>
ip/config/page1?p=page1
确定规则现在起作用(部分),这是结果:
ip/project/config/?p=page1
=>
ip/project/config/page1?p=page1
结果应该是这样的
ip/project/config/?p=page1
ip/project/config/page1/
嗨,可以修改规则来处理可能的第二个参数p2吗?如果参数p2存在
ip/project/config/?p=page1&p2=subpage1
=>
ip/project/config/page1/subpage1
。我试图修改规则,但不知道htaccess文件的语法。我的意图没有成功。您好,可以编辑此规则并添加此规则:
ip/project/config/?p=page1¶m1=param1¶m2=param2¶m3=param3
ip/project/config/page1/param1/param2
(隐藏参数3),保持这两条规则已经存在?我试图改变规则,但我认为它们相互冲突。