我尝试将任何请求重定向到subfolder/index.php
到subfolder/
,并仍然显示子文件夹的index.php
文件的内容。这不仅仅针对一个子文件夹,因此我需要一般规则。但请注意,某些目录(例如css/
和images/
)不会有index.php文件,我只是想拒绝访问它们,如果用户试图点击它们具体目录。
目前,subfolder/index.php
的请求转到subfolder/index/
(但实际上仍显示index.php的内容)。这是因为规则我必须用尾部斜杠替换.php扩展名(感谢此论坛上的其他帖子!)
所以我认为我错过了一条位于我的尾随斜线规则之上的规则。
到目前为止,我有这个:
RewriteEngine On
# make all requests to the domain root show contents of index.php
DirectoryIndex index.php
#Permanently move requests to index.php to the domain root
RewriteRule ^index\.php$ / [NC,R=301,L]
#do not allow a directory listing
Options -Indexes
##**** INSERT RULE HERE TO DEAL WITH SUBFOLDER INDEX FILES****
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R=301,L]
# add a trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
任何帮助都会非常感激,因为我已经在htaccess文件上挣扎了一段时间并且无法解决问题。
答案 0 :(得分:0)
评论此规则:
RewriteRule ^index\.php$ / [NC,R=301,L]
并将此规则插入同一位置:
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]