Htaccess用破折号重写condicion url

时间:2016-01-29 09:24:26

标签: apache .htaccess mod-rewrite

我很难让这个htaccess工作

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /([temp|ox|cond|new-url]+)/
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ graph.php?grap=$1&time=$2 [NC,L]

在将new-url条件添加到重写条件之前,它正常运行

我还尝试将new\-urlnew/-url放在一起,但也无法使用

我做错了什么?

2 个答案:

答案 0 :(得分:2)

我认为您的文件中存在一些错误。

首先,([temp|ox|cond|new-url]+)([cdelmnoprtuwx|-]+)相同。在这里,您要搜索字符,而不是字词。如果我理解,您正在寻找以/temp//ox//cond/new-url开头的网址。所以我会用这个条件:

RewriteCond %{REQUEST_URI} ^/(temp|ox|cond|new-url)/

其次,当您匹配new-url时,会有一个破折号。但是你的下一条规则并不接受任何冲刺!改变这个:

RewriteRule ^([a-z-]+)/([a-z-]+)$ graph.php?grap=$1&time=$2 [NC,L]

注意:

  • 我使用[a-z]代替[A-Za-z],因为您的规则并未考虑帐户([NC]
  • 我在字符范围的末尾添加了短划线:[a-z-]

答案 1 :(得分:1)

我认为你需要逃避 - 内部角色类。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /([temp|ox|cond|new\-url]+)/
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ graph.php?grap=$1&time=$2 [NC,L]

如果这不能解决问题,您可以使用简单的模式:

RewriteCond %{REQUEST_URI} /(temp|ox|cond|new-url)/?