.htaccess重写正则表达式:匹配除"索引"之外的任何内容

jez*_*mck 10 regex apache .htaccess

我正在尝试创建一个.htaccess文件中使用的规则,以匹配特定字符串之外的任何内容,在这种情况下:index.

我认为应该可以首先匹配这个特殊字符串并使用[L]但不起作用,
并且应该可以使用以下正则表达式,但它会导致500错误.

我想匹配:

  • pagename1
  • pagename2 /什么
  • pagename3/234 /什么
  • 关于
  • 联系我们
  • (等等)

但不是

  • 索引/ 123
  • 索引/ 124 /不管

(BTW"索引"是没有扩展名的文件的名称,不是我的选择,这是一个工作的事情)

^(?!index)[\w/\-]+
Run Code Online (Sandbox Code Playgroud)

我假设apache的正则表达式的实现不符合(?!xxx)规则.

任何帮助/建议将不胜感激.

Vin*_*vic 16

您可以使用RewriteConds来执行此操作,例如:

RewriteCond %{REQUEST_URI} !^index
RewriteRule (.*) index.php?what=$1
Run Code Online (Sandbox Code Playgroud)

这将重写每个不以索引开头的URL.如果您希望它在URL中的任何位置避免它,请删除^