.htaccess htaccess删除参数密钥未按预期工作

.htaccess htaccess删除参数密钥未按预期工作,.htaccess,.htaccess,我目前有一个重写规则来删除其中一个站点上的密钥 RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^(.*)$ /i/index.php?id=$1 [NC,L] 我现在想添加这个规则 RewriteRule ^(.*)$ /stash/in

我目前有一个重写规则来删除其中一个站点上的密钥

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ /i/index.php?id=$1 [NC,L]
我现在想添加这个规则

RewriteRule ^(.*)$ /stash/index.php?sid=$1 [NC,L]
然而,这是行不通的

HOST_NAME/stash/123 will not work.
HOST_NAME/stash?sid=123 will.
PHP很简单

echo $_GET['sid'];
这是我的全部权限

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(www\.)?hostname\.com
RewriteRule ^(.*)$ https://www.hostname.com/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ /i/index.php?id=$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(.*)$ /stash/index.php?sid=$1 [NC,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /results/index.php?/$1 [L]
这方面的任何帮助都会很好

更新

网站上有四个主要目录

/results
/i
/stash
/account
我不在乎
/results
是否显示
?id=1$store=1…等

我不想/我和/藏起来显示这一点。我希望这些看起来像

/i/123456789 instead of /i?id=123456789
/stash/hgdG54Hj9 instead of /stash?sid=hgdG54Hj9

看起来您有很好的基于目录的URI结构。在这种情况下,您只需拥有一个per directory.htaccess

您可以在根目录中使用此代码。htaccess:

RewriteEngine On

RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^(?:www\.)?(hostname\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
内部
stash/.htaccess

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?id=$1 [L,QSA]
同样,在
i/.htaccess
中:

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

重写规则^(.*)$
不能有两个不同的目标。您之前已经有了
/i/index.php?id=$1
,因此它只适用于该版本。@anubhava我如何修复此版本?只有在您优化需求后才能修复。如果您以
/foobar
的形式获取URL,那么应该如何处理它?请查看我的编辑@anubhavaresults应该属于此处,因为结果最多可能有5个参数。我需要更多的钱来储存/帐户将只有目录/account |/account/giveway etcok在这种情况下,将最后一条规则更改为:
RewriteRule^(i| stash)/(.*)$$1/index.php?id=$2[NC,L,QSA]
不幸的是,这不起作用。。。但是我确实是通过在/stash目录中包含一个htaccess来实现的。是的,如果您准备在每个子目录中都包含.htaccess,那么它将更加简化。让我更新一下