0

任何人请帮助我。我是.htaccess的新手

我想检查以下情况

RewriteCond : IF !index.html AND !app/facebookapp/{[a-zA-Z0-9-/]}.html
RewriteRule : .....

我的代码是

RewriteCond %{REQUEST_URI} !index\.html 
RewriteCond %{REQUEST_URI} app/facebookapp/^([a-zA-Z0-9-/]+).html$ 
RewriteRule ......

它不工作

还有一个问题

如果请求 url 是header.html

RewriteCond %{REQUEST_URI} header.html$ 
RewriteRule ^([a-zA-Z0-9-/]+).html$ position.php?position=$1 [L]

$l将返回header

如果请求 url 是app/facebookapp/header.html 我们写相同的上述条件$l将返回app/facebookapp/header。我的问题是如何只获取文件名?

谢谢

4

1 回答 1

1

第1部分:

在我看来,您将 ^ 字符放在错误的位置。在正则表达式语法中,它表示文本的开头,但前面有一些文本。你可以把它放在东西的前面,但我认为在这种情况下你可以摆脱它。试试这个:

RewriteCond %{REQUEST_URI} !index\.html 
RewriteCond %{REQUEST_URI} app/facebookapp/([a-zA-Z0-9-/]+).html$ 
RewriteRule ......

第2部分:

您将需要两个匹配的组,并且只使用右侧的第二个组。第一个包含 / 作为有效字符,第二个不包含。让我知道这是否效果更好:

RewriteCond %{REQUEST_URI} header.html$ 
RewriteRule ^([a-zA-Z0-9-/]+)/?([a-zA-Z0-9-]+).html$ position.php?position=$2 [L]
于 2012-11-29T04:42:13.403 回答