目录和文件的重写条件

时间:2012-11-29 04:34:07

标签: apache .htaccess

任何人请帮助我。我是.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 ......

它不起作用

还有一个问题

如果请求网址为header.html

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

$l将返回header

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

感谢

1 个答案:

答案 0 :(得分: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]