【问题标题】:.htaccess rewrite, trying to remove .html file extension on all files EXCEPT index file.htaccess 重写,试图删除所有文件上的 .html 文件扩展名,除了索引文件
【发布时间】:2014-02-05 19:38:00
【问题描述】:

我正在尝试对我的所有文件进行“简单”重写,这样您就不必转到网址末尾带有 .html 的链接。我有一个几乎可以完全运行的代码,除了它重写了所有文件,然后搞砸了我的 index.html 文件,这是一个大问题。这是我正在使用的代码:

Options FollowSymLinks
DirectorySlash Off
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.html

我想我只需要一个代码让它忽略 index.html,所以我尝试了这个,它在我的索引页面上给了我错误 403,在所有其他页面上给了我错误 500:

RewriteRule ^index.html$ $0 [L]

但我猜到最后,我并不完全确定自己在做什么,也不知道将代码行放在哪里,甚至不知道它是否完全正确。

我尝试的原始代码是这样的,但它在每个页面上都给了我错误 403:

Options FollowSymLinks
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ $1.html

我做错了什么?

【问题讨论】:

    标签: php html apache .htaccess mod-rewrite


    【解决方案1】:

    试试这个代码:

    Options FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{DOCUMENT_ROOT}/$1.html -f [OR]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f [OR]
    RewriteCond %{REQUEST_FILENAME}.html -f
    RewriteRule ^((?!index).+?)/?$ $1.html [L,NC]
    

    【讨论】:

    • 没用。它使我的 index.html 文件完好无损,但其余部分出现错误 500。它也让我的 css 有点混乱。
    • 您厌倦了测试这个 URL 是什么?同样对于 500,您应该检查 Apache error.log 文件。
    • 我没有测试站点,不幸的是,我直接在实时站点上执行此操作。 www.timbertechstairs.com 另外,我不确定如何检查 Apache error.log 文件,尤其是因为我实际上并没有在我的计算机上运行 Apache。该网站是通过我们的互联网提供商(谁运行 apache)托管的,所以我不确定我是否可以选择检查 apache error.log 文件?
    • 通常通过 cpanel 你可以检查 Apache 的 error.log 但哪个 URL 在www.timbertechstairs.com 上导致 500?
    • 我刚刚重新测试了这个发布的代码,它运行良好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-28
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多