简体   繁体   English

重写规则不提供 GET 参数

[英]rewrite rule dont gives GET-Parameter

I have the following rule:我有以下规则:

RewriteEngine On
Options +FollowSymlinks

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^([^/]+)(?:/([^/]+))?/?$ index.php?a=$1&b=$2 [QSA]

This rule redirect all requests to my index.php and works like a charm.此规则将所有请求重定向到我的 index.php 并像魅力一样工作。 Now I would like to ADD another rule that redirect all requests for the directory /admin/ to admin.php in root.现在我想添加另一个规则,将目录 /admin/ 的所有请求重定向到 root 中的 admin.php。 (A request for www.mysite.de/admin/login should end in www.mysite.de/admin.php?a=login&b= ) The second parameter b should be optional. (A为请求www.mysite.de/admin/login应以结尾www.mysite.de/admin.php?a=login&b= )第二个参数b应是可选的。 How to reach this?如何达到这一点? Thx for any hint in advance.感谢提前提供任何提示。

You can test htaccess rules online (ex. here: htaccess.madewithlove.be )您可以在线测试 htaccess 规则(例如: htaccess.madewithlove.be

This code works with: www.mysite.de/admin/login and www.mysite.de/admin/login/123此代码适用于: www.mysite.de/admin/loginwww.mysite.de/admin/login/123

edited已编辑

RewriteEngine On
Options +FollowSymlinks

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^admin/?([^/]*)/?(.*)$ admin.php?a=$1&b=$2 [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/?(.*)$ index.php?a=$1&b=$2 [NC,QSA,L]

#removed
#RewriteRule ^admin/([^/]+)(?:/([^/]+))?/?$ admin.php?a=$1&b=$2 [NC,QSA,L]
#RewriteRule ^([^/]+)(?:/([^/]+))?/?$ index.php?a=$1&b=$2 [QSA]

Notice that you need the L flag there.请注意,您在那里需要L flag ( RewriteRule Flags ) 重写规则标志

Also useful to see How L flags work - StackOverflow answer and Everything about mod rewrite - serverfault.com thread查看L 标志如何工作也很有用- StackOverflow 答案关于 mod 重写的一切 - serverfault.com 线程

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM