将子文件夹/ index.php重定向到子文件夹/

时间:2018-04-20 07:26:12

标签: php apache .htaccess url-rewriting

我尝试将任何请求重定向到subfolder/index.phpsubfolder/,并仍然显示子文件夹的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文件上挣扎了一段时间并且无法解决问题。

1 个答案:

答案 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]