.htaccess rewrite regex:匹配任何规则,但不得影响其他规则

.htaccess rewrite regex:匹配任何规则,但不得影响其他规则,regex,apache,.htaccess,mod-rewrite,Regex,Apache,.htaccess,Mod Rewrite,我有这个.htaccess当我输入example.com/home时,它将打开文件home.php并登录相同的东西,否则它将打开hani.php RewriteRule ^home$ home.php [L] RewriteRule ^login$ login.php [L] ... RewriteRule ^([^\/]+)$ hani.php?link=$1 [L] 我的问题当我回家或其他时候,它会打开hani.php 请我想要一个好的解决方案,因为我有很多页 问题是,您的上一次重写

我有这个
.htaccess
当我输入
example.com/home
时,它将打开文件
home.php
并登录相同的东西,否则它将打开
hani.php

RewriteRule ^home$  home.php [L]
RewriteRule ^login$  login.php [L]
...
RewriteRule ^([^\/]+)$  hani.php?link=$1 [L]
我的问题当我回家或其他时候,它会打开hani.php

请我想要一个好的解决方案,因为我有很多页


问题是,您的上一次重写是无条件的,并且在完成之前的其他重写之后重写,从而将所有内容发送到
hani.php

有两种解决方案(使用任意一种):

  • 使用以下命令从上一个规则中排除所有文件和目录:
  • RewriteCond%{REQUEST\u FILENAME}-F
    重写cond%{REQUEST_FILENAME}-D
    重写规则^([^/]+)/?$hani.php?link=$1[L,QSA]
    
  • 在上一条规则中从匹配模式中排除点,以便
    home.php
    或任何包含点的请求与模式不匹配:
  • RewriteRule^([^/]+)/?$hani.php?link=$1[L,QSA]
    

    请注意,
    mod\u rewrite

    add
    RewriteCond%{REQUEST\u FILENAME}中的regex模式不需要转义
    /
    -f
    在最后一条规则之前或
    重写规则^([^./]+)/?$hani.php?link=$1[L,QSA]