任何人请帮助我。我是.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
。我的问题是如何只获取文件名?
感谢
答案 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]