重写 .htaccess 增益问题


Rewrite .htaccess buffling issue

所以我正在尝试为我正在开发的网站重写一些网址。重写文件读取为:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /NetbeansProjects/App/
RewriteRule ^(.*)/+$ $1 [R=301,L]
RewriteRule ^/*$ index.php?page=index [NC]
RewriteRule ^([webapp/]+)/([main/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$2  [NC,QSA]
RewriteRule ^([webapp/]+)/([dashboard/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$2  [NC,QSA]
RewriteRule ^([webapp/]+)/([search/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$2  [NC,QSA]
RewriteRule ^([search/]+)/?$ /NetbeansProjects/App/index.php?page=college_$1  [NC,QSA]
RewriteRule ^([webapp/]+)/([apply/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$2  [NC,QSA]
RewriteRule ^([webapp/]+)/(.*)/([main/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$3&uni=$2  [NC,QSA]
RewriteRule ^([webapp/]+)/(.*)/([apply/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$3&uni=$2  [NC,QSA]
RewriteRule ^([webapp/]+)/(.*)/?$ /NetbeansProjects/App/index.php?page=index [NC,QSA]
RewriteRule ^about/?$ index.php?page=about [NC]
RewriteRule ^webapp/?$ index.php?page=college_no_login [NC]
RewriteRule ^faq/?$ index.php?page=faq [NC]
RewriteRule ^contact/?$ index.php?page=contact [NC]
RewriteRule ^planner/?$ index.php?page=planner [NC]

主要问题是当我将我的网址传递为:

http://www.example.com/webapp/dash or http://www.example.com/webapp/sos

由于某种原因,它重定向错误。本地服务器将此行传递为真:

RewriteRule ^([webapp/]+)/([dashboard/]+)/?$ /NetbeansProjects/App/index.php?page=$1_$2  [NC,QSA]

不应该是这样。我能够使用这个网站检测到这一点:http://martinmelin.se/rewrite-rule-tester/

更新:此代码现在似乎正在按预期工作

RewriteRule ^(webapp+)/(dashboard+)/?$ /NetbeansProjects/App/index.php?page=$1_$2 [NC,QSA]

在每一行我删除了'[', ']'

你的正则表达式有错误。[abc]表达式代表一组字符之一。

这意味着[dashboard/]匹配"d"、"a"、"s"等中的任何一个,因此[dashboard/]+匹配由任意数量的"d"、"a"、"s"等组成的任何字符串,但至少完全匹配其中一个。

您需要删除[]。对于分组,请使用() - 但我相信在这种情况下您不需要它:

(foo/)+

[webapp/] 也是如此,所以规则变成:

RewriteRule ^(webapp/)/(dashboard/)/?$ /NetbeansProjects/App/index.php?page=$1_$2  [NC,QSA]