我的.htaccess文件有什么缺失或错误?

时间:2016-08-02 01:14:44

标签: apache .htaccess optimization

我对.htaccess文件一无所知,所以我想问你们一些帮助。我将列出我试图用代码做的事情,但是没有用。

  • 从我的网址中删除.html和.php(我的意思是获得一个干净的链接);
  • 压缩图片和.js / .css等文件(Google speedtest表示没有发生这种情况);
  • 使网站可以使用和不使用www(标准将没有www);

嗯,那就是它。提前谢谢你的帮助!!

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<FilesMatch "(\. (engine|inc|info|install|module|profile|po|sh|.*sql|theme|tpl(\.php)? |xtmpl)|code-style\.pl|Entries.*|Repository|Root|Tag|Template)$">
Order allow,deny
</FilesMatch>
Options -Indexes
RewriteEngine on
RewriteRule ^/abc/(.*)$ /new/$1 [R=301,L]
RewriteEngine on
RewriteRule ^/def/(.*)\.html$ /new2/$1.html [R=301,L]
RewriteEngine on
RewriteRule ^/ghi/(.*)\.(html|htm)$ /new3/$1.$2 [R=301,L]
RewriteEngine on
RewriteRule ^/jkl/(.*)$ http://www.mywebsite.com/$1 [R=301,L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 month"
ExpiresByType image/jpeg "access 1 month"
ExpiresByType image/gif "access 1 month"
ExpiresByType image/png "access 1 month"
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 month"
ExpiresDefault "access 1 month"
</IfModule>

2 个答案:

答案 0 :(得分:1)

要在Apache中获得自动重定向,您可以考虑使用MultiViews,它易于启用和向后兼容。例如,在.htaccess文件中使用以下一行:

Options +MultiViews

您现在可以从这些网址访问同一文件:

/def/search.html
/def/search

之后,需要更改HTML文件,以便链接到没有文件后缀的URL。这是一项重大任务(但有一些工具可能有所帮助)。

至于gzip尝试,StackOverflow上的其他人似乎recommend mod_deflate优先于mod_gzip,因为它更容易配置。有关使用mod_deflate的说明,请参阅this page(正好在mod_gzip说明下方)。

最后,您可以使用mod_rewrite重定向到没有www前缀的规范URL。 www.example.com的示例:

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^/(.*)       http://example.com/$1 [L,R=301]

答案 1 :(得分:1)

为什么不使用像这样的文件:

GitHub - Apache Server Configs

此.htaccess已经有压缩等配置。

我认为您可以将所有需要的内容添加到文件中,例如您可以添加flashplayer文件的类型。