.htaccess不能在子目录下工作


.htaccess not working in subdirectory

我的.htaccess文件应该删除url中的.php扩展名,强制使用斜杠并在需要的地方分配get值。如果没有找到脚本/文件/目录,它会将您重定向到根目录。例如,如果你输入http://127.0.0.1/about-us/,它会把你带到http://about-us.php,或者如果你输入http://127.0.0.1/file/delete-avatar/230,它会重写到http://127.0.0.1/file.php?a=delete-avatar&id=230,或者如果你输入http://127.0.0.1/nu(其中nu是一个现有的目录),它会把你带到http://127.0.0.1/nu。但是,当您将脚本放入目录并附加GET值时,.htaccess无法重写并重定向到索引。例如,如果输入http://127.0.0.1/nu/login/recover-password不重写为http://127.0.0.1/nu/login?a=recover-password。我的。htaccess在这里

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /     
   # remove php extensions (only for GET method)
   RewriteCond %{THE_REQUEST} ^GET' /(.+)'.php(?:'?|'s) [NC]
   RewriteCond %{REQUEST_FILENAME} -f
   RewriteRule ^ %1/? [L,R=301]
   # don't touch other existing files/folders
   RewriteCond %{REQUEST_FILENAME} -f [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^ - [L]
   # force trailing slash
   RewriteCond %{DOCUMENT_ROOT}/$1'.php -f
   RewriteRule ^(.+)$ $1/ [L,R=301] 
   # rewrite extensionless php files
   RewriteCond %{DOCUMENT_ROOT}/$1.php -f
   RewriteRule ^(.+)/$ $1.php [L]
   #subscribe
   RewriteRule ^([^/]+)/([^/]+)/?$ $1.php?a=$2 [QSA,L]
   RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ $1.php?a=$2&id=$3 [QSA,L]
   # finally, if not found
   RewriteRule ^ index.php [L]
</IfModule>

将此新规则插入 #subscribe line下面:

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+/[^/]+/[^/]+)/([^/]+)/?$ $1.php?a=$2 [L,QSA]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+/[^/]+)/([^/]+)/?$ $1.php?a=$2 [L,QSA]