[英]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/login和www.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.