Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新建.htaccess站点_.htaccess - Fatal编程技术网

新建.htaccess站点

新建.htaccess站点,.htaccess,.htaccess,我承认我对编码是全新的。我正试图帮助一位使用Dreamweaver在总部的服务器上发布网站的客户。我要求他们的IT部门将代码添加到他们的.htaccess文件中,这将有助于将非https重定向到https,并强制www,但同时删除.html扩展名。我很确定代码是正确的,但当他们添加代码时,网站崩溃了 旧的.htaccess文件具有以下代码: /var/www/html/HRT/.htaccess RedirectMatch 301 ^/here(/.+?)?$ http://go.example

我承认我对编码是全新的。我正试图帮助一位使用Dreamweaver在总部的服务器上发布网站的客户。我要求他们的IT部门将代码添加到他们的.htaccess文件中,这将有助于将非https重定向到https,并强制www,但同时删除.html扩展名。我很确定代码是正确的,但当他们添加代码时,网站崩溃了

旧的.htaccess文件具有以下代码:

/var/www/html/HRT/.htaccess
RedirectMatch 301 ^/here(/.+?)?$ http://go.example.com/here
RedirectMatch 301 ^/HERE(/.+?)?$ http://go.example.com/here
RedirectMatch 301 ^/there(/.+?)?$ http://go.example.com/there
RedirectMatch 301 ^/THERE(/.+?)?$ http://go.example.com/there
为了隐私,我更改了URL。只是让它在以前起作用。但是当我要求他们添加下面的代码时,它坏了。甚至不知道从哪里开始

# FORCE HTTPS, FORCE WWW and REMOVE HTML #
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
RewriteRule ^([^/]+)\.html$ $1 [QSA,L]

# EXPIRES CACHING VIA HTACCESS #
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
#强制HTTPS、强制WWW和删除HTML#
重新启动发动机
重写cond%{HTTPS}关闭[或]
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写cond%{HTTP_HOST}^(?:www\)?(.+)$[NC]
重写规则^https://www.%1%{REQUEST_URI}[L,NE,R=301]
重写规则^([^/]+)\.html$$1[QSA,L]
#通过HTACCESS使缓存过期#
过期于
过期按类型映像/jpg“访问1年”
过期按类型图像/jpeg“访问1年”
ExpiresByType image/gif“访问1年”
过期按类型图像/png“访问1年”
ExpiresByType文本/css“访问1个月”
ExpiresByType text/html“访问1个月”
过期按类型应用程序/pdf“访问1个月”
ExpiresByType文本/x-javascript“访问1个月”
过期按类型应用程序/x-shockwave-flash“访问1个月”
过期按类型图像/x图标“访问1年”
ExpiresDefault“访问1个月”
我应该注意到,在前一周,他们也在http.config文件中添加了使缓存过期的内容,因此我不确定这是否会导致此问题。试着想想他们在犯错误之前所做的一切

提前谢谢

你不能像在
.htaccess
中那样简单地“删除”
.html
文件扩展名-它肯定会破坏你的网站

事实上,您不能仅通过编辑
.htaccess
来删除文件扩展名。这是一个两阶段的过程:

  • 您需要删除应用程序中所有URL上的
    .html
    扩展名。所有内部链接都需要更新,以省略
    .html
    扩展名

  • 然后使用
    .htaccess
    在内部重写请求,而不使用扩展名,返回到包含
    .html
    扩展名的实际文件系统路径。在这一切之下,您的文件系统路径没有改变

    例如:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)$ $1.html [L]
    
    这假设您的URL不包含点(
    )-除非它们直接请求文件(例如
    .js
    .css
    .jpg
    ,等等)

    您还需要确保禁用(如果尚未禁用)多视图才能正常工作。例如,在
    .htaccess
    文件的顶部包括以下内容:

    Options -MultiViews
    
  • 如果要更改现有的URL结构,则需要实现外部重定向,以从URL中物理删除
    .html
    扩展,以保留SEO。但是,只有当您完成了上述步骤1(和步骤2)并且删除了所有内部URL上的
    .html
    扩展名时,您才应该实现这一点(否则,您的用户在浏览站点时会在每个链接上遭受外部重定向,这将导致速度变慢,并使服务器上的请求增加一倍)

    例如,在重写之前需要执行以下重定向(如上所述):

    检查
    REDIRECT\u STATUS
    环境变量的条件确保我们只针对直接请求,而不是重写的请求

    请注意,这当前是一个302(临时)重定向。只有在确认其正常工作后才将其更改为301(永久)重定向,以避免缓存问题

  • 总之 然后在下面添加您的规范HTTP到HTTPS和非www到www重定向:

    # Redirect to remove the ".html" extension from direct requests
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule (.+)\.html$ /$1 [R=302,L]
    
    # Internal rewrite to re-append the ".html" extension for the internal request
    # NB: Exclude requests for directories
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)$ $1.html [L]
    
    你不能像在
    .htaccess
    中那样简单地“删除”
    .html
    文件扩展名-它肯定会破坏你的网站

    事实上,您不能仅通过编辑
    .htaccess
    来删除文件扩展名。这是一个两阶段的过程:

  • 您需要删除应用程序中所有URL上的
    .html
    扩展名。所有内部链接都需要更新,以省略
    .html
    扩展名

  • 然后使用
    .htaccess
    在内部重写请求,而不使用扩展名,返回到包含
    .html
    扩展名的实际文件系统路径。在这一切之下,您的文件系统路径没有改变

    例如:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)$ $1.html [L]
    
    这假设您的URL不包含点(
    )-除非它们直接请求文件(例如
    .js
    .css
    .jpg
    ,等等)

    您还需要确保禁用(如果尚未禁用)多视图才能正常工作。例如,在
    .htaccess
    文件的顶部包括以下内容:

    Options -MultiViews
    
  • 如果要更改现有的URL结构,则需要实现外部重定向,以从URL中物理删除
    .html
    扩展,以保留SEO。但是,只有当您完成了上述步骤1(和步骤2)并且删除了所有内部URL上的
    .html
    扩展名时,您才应该实现这一点(否则,您的用户在浏览站点时会在每个链接上遭受外部重定向,这将导致速度变慢,并使服务器上的请求增加一倍)

    例如,在重写之前需要执行以下重定向(如上所述):

    检查
    REDIRECT\u STATUS
    环境变量的条件确保我们只针对直接请求,而不是重写的请求

    请注意,这当前是一个302(临时)重定向。只有在您确认其工作正常后才将其更改为301(永久)重定向-以避免卡奇
    # Redirect to remove the ".html" extension from direct requests
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule (.+)\.html$ /$1 [R=302,L]
    
    # Internal rewrite to re-append the ".html" extension for the internal request
    # NB: Exclude requests for directories
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^.]+)$ $1.html [L]