【问题标题】:Rewrite .htaccess buffling issue重写.htaccess buffling问题
【发布时间】:2015-02-24 04:19:07
【问题描述】:

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

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

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

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]

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

【问题讨论】:

  • webappdashboard 之后不需要+

标签: php .htaccess xampp


【解决方案1】:

您的正则表达式有误。 [abc] 表达式代表一组字符中的一个。

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

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

(foo/)+

[webapp/] 相同,因此规则变为:

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

【讨论】:

  • 我明白你的意思,但你的解决方案没有奏效。它给了我一个错误 404
  • 我相信这是您提出的规则:RewriteRule ^(webapp+)/(dashboard+)/?$ /NetbeansProjects/App/index.php?page=$1_$2 [NC,QSA]
  • 当然不是。那将匹配.../dashboardddd/。我猜这是不希望的。但是,尚不清楚您到底期望什么。错误日志中有什么? Web 服务器实际尝试访问的文件是什么?
  • 我经过反复检查,发现与 .../dashboardddd/ 不匹配。它在那里给出了错误 404。
猜你喜欢
  • 2013-07-22
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
相关资源
最近更新 更多