我正在尝试重写我的网址以转到单个php文件:
RewriteRule ^dir/(?:(?!style|js).)*$ http://www.domain.com/single.php?uri=$1 [QSA]
然而,排除/ dir / js和/ dir / style是行不通的,因为我希望它会......
如何更改正则表达式以满足我的需求?
答案 0 :(得分:2)
尝试将style|js
替换为style\b|js\b
。
也许RewriteCond
可以像
RewriteCond %{REQUEST_URI} !^/dir/(style|js)($|/)
RewriteRule ^/dir/(.*)$ http://www.domain.com/single.php?uri=$1 [QSA]
答案 1 :(得分:0)
编辑:
domain.com/dir/json不会重定向,因为它与正则表达式不匹配。
/ dir / json没有重定向的原因是因为js跟在dir /之后,你的正则表达式只匹配dir /后面没有 样式或者js。我认为消极的前瞻是错误的做法。我认为你真正想要的是:
RewriteCond %{REQUEST_URI} !^/dir/(js|style)(/.*)?$
RewriteRule ^dir/(.*)$ http://www.domain.com/single.php?uri=$1 [LQSA]
这基本上意味着如果URL 不是以/ js或/ style结尾(可选地在这些dirs下面还有其他路径组件),然后应用重定向规则。
答案 2 :(得分:0)
使用您的负面预测断言:
RewriteRule ^dir/(?!(?:style|js)(?:/|$))(.*) http://www.example.com/single.php?uri=$1 [QSA]
但那不太好。
或者您只是添加另一个关于$1
如何开始的测试:
RewriteCond $1 !^(style|js)(/|$)
RewriteRule ^dir/(.*) http://www.example.com/single.php?uri=$1 [QSA]