【问题标题】:How to hide folder names and file extension in URL?如何在 URL 中隐藏文件夹名称和文件扩展名?
【发布时间】:2016-06-23 04:21:06
【问题描述】:

我有以下要求,我相信可以使用 .htaccess 文件来完成。 要求-

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

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

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

【问题讨论】:

  • 请添加您尝试过但不起作用的规则
  • 'stackoverflow.com/questions/30366605/…' 这是我从中获得帮助的页面。我现在没有确切的脚本。由于它不起作用,我将其删除。

标签: php apache .htaccess redirect


【解决方案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]

【讨论】:

    【解决方案2】:

    您应该尝试以下方法:

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

    【讨论】:

    • 它不工作。我已将我的.htaccess 文件放在根位置,即我的index.php 所在的位置。事实上,它的作用是限制对index.php 的访问,除非我输入localhost/dashboard/index.php 然后它既不满足要求1 也不满足要求2
    • @VishalKhare 您需要清除浏览器历史记录,然后强制刷新页面以激活更新的.htaccess 文件。
    【解决方案3】:

    你可以试试这个

    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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-14
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多