如何配置.htaccess禁止目录列表并将请求转发到my-handler.php?
问题描述
通过.htaccess和PHP实现SEO友好URL时,90%的需求已实现,仅剩余一个场景存在问题:
- 访问地址
http://somesite.com/cms/movies/tarzan时,请求会正常跳转至my-handler.php?the_url=movies/tarzan,符合预期 - 访问不带路径后缀的目录地址
http://somesite.com/cms/时,服务端会直接列出该目录下的所有文件和文件夹,不会交由my-handler.php处理
现有.htaccess配置
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /cms/ RewriteCond %{REQUEST_FILENAME} !/(admin|css|fonts|ico|include|js)/ RewriteRule ^my-handler\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /cms/my-handler.php?the_url=$1 [L,QSA] </IfModule>
解决方案
已解决
在上述配置中添加DirectoryIndex my-handler.php即可解决问题。该方案无需修改RewriteCond %{REQUEST_FILENAME} !-d规则,不会影响真实物理目录的正常访问。
内容的提问来源于stack exchange,提问作者PHP Avenger
相关产品推荐
相关产品推荐

