【问题标题】:.htaccess remove .html file/directory priority rewrite.htaccess 移除 .html 文件/目录优先重写
【发布时间】:2013-10-04 08:56:01
【问题描述】:

我正在尝试重写,以便您可以访问不带 .html 且不添加斜杠的文件。这是正在使用的代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^(.*?)/?$ $1.html

但是对于我在服务器上的文件结构,我有这个:

/public_html
          ..
          /beginners
           beginners.html

在 /beginners 文件夹内还有其他文件,例如

          /beginners/page1.html

我需要重写才能像这样工作:

如果用户输入网址: website.com/beginners - 服务器将返回 文件beginners.html 当前返回目录/beginners 的内容。所以我需要服务器首先检查beginners.html 是否存在,如果存在-然后服务器服务beginners.html 而不是目录/beginners

如果用户访问 url website.com/beginners/page1 服务器应该首先检查是否 page1.html 存在于文件夹初学者中,如果它找到文件 page1.html 然后它提供文件 page1.html 的内容

如何做到这一点?

【问题讨论】:

  • 所以/beginners/ - 是返回目录还是/beginners.html
  • 实际上,您似乎只需要摆脱第一个重写条件 - 它指定 URI 不指向目录。
  • @FrankieTheKneeMan /beginners/ 将返回目录

标签: regex apache .htaccess mod-rewrite rewrite


【解决方案1】:

这是执行此操作的 .htaccess:

Options +FollowSymLinks -MultiViews -Indexes
DirectorySlash Off
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^(.*?)/?$ $1.html

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2021-03-13
    相关资源
    最近更新 更多