如何在URL中隐藏文件夹名称和文件扩展名?

时间:2016-06-23 04:21:06

标签: php apache .htaccess redirect

我有以下要求,我认为可以使用.htaccess文件完成。 的要求 -

  1. 隐藏URL中的文件夹名称和文件扩展名。 www.example.com/subfolder/subfolder1/file.php应该成为www.example.com/file

  2. 限制文件夹浏览 - 我想在某人触发URL时限制文件夹浏览功能,例如。 www.example.com/subfolder通常,通过触发此网址,用户可以浏览subfolder的内容。通过触发此类URL或包含域example.com的任何URL,例如。 www.example.com/folderNotExist然后服务器应该重定向到索引页。

  3. 我能够限制文件夹浏览,但重定向到索引页面并隐藏文件夹和文件扩展名不起作用。

3 个答案:

答案 0 :(得分:1)

您可以在根目录中使用这些规则.htaccess:

ErrorDocument 404 /
DirectoryIndex index.php

RewriteEngine On

RewriteCond %{THE_REQUEST} /subfolder/subfolder1/ [NC]
RewriteRule ^ / [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/subfolder/subfolder1/$1.php -f
RewriteRule ^(.+?)/?$ subfolder/subfolder1/$1.php [L]

答案 1 :(得分:0)

你应该尝试类似的东西:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*?)$ /subfolder/subfolder1/$1.php 
ErrorDocument 404 /index.php

答案 2 :(得分:0)

你可以试试这个

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.mysample.com
RewriteRule ^subdir/(.*)$ http://www.mysample.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f