在新的重写URL中删除不需要的Get参数

时间:2014-05-03 17:11:17

标签: php apache .htaccess mod-rewrite get

我有以下.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ((^((/)*admin(/)+).*)|(^admin$)) $0 [NS]
    RewriteRule ^((?!\.).)*$ "system/scripts/startPageProcess.php?slug=$0" [NS]
</IfModule>

如果一个URL以“admin /”开头或等于“admin”,则不应该有重定向。 如果URL是差异,则应使用URL调用startPageProcess.php作为“slug”-Get-Parameter(例如“asdf”重定向到“system / scripts / startPageProcess.php?slug = asdf”)。 到目前为止这是有效的。

现在存在以下问题:如果我调用“admin”,则没有重定向 - 到目前为止,这么好 - 但浏览器中显示的URL更改为:“admin /?slug = admin”我没有想法为什么。

我真的不是一个.htaccess-expert,所以我不知道为什么会这样,你如何解决这个问题,或者你是否可以让整个事情变得更容易。所以请帮忙。

2 个答案:

答案 0 :(得分:0)

您需要添加最后一个规则标志,以便管理规则为

RewriteRule((^((/) admin(/)+)。)|(^ admin $))$ 0 [NS,L]

答案 1 :(得分:0)

你的规则如下:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^admin(/.*)?$ - [L]
    RewriteRule ^([^./]+)/?$ system/scripts/startPageProcess.php?slug=$1 [L,QSA]
</IfModule>