“.htaccess” 标签页面:

  • Blogger转移到WordPress的rewrite跳转规则

    Blogger转移到Wordpress的.htaccess的rewrite跳转规则。

    这是很久之前写的,一直没有整理出来。刚好今天博客搬家,整理一下发上来。

    这份代码可以吧blogger的相同月份的文章转移到wordpress对应的月份归档里,当然,无论如何是不能从blogger的具体文章跳转到wordpress的对应文章的,这是是最精确、最有利于SEO的做法。

    以下是.htaccess的rewrite代码:

    #BEGIN old blog
    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      #post
      RewriteRule ^([0-9]{4})/([0-9]{2})/[A-Za-z0-9_-]+\.html$ /date/$1/$2 [R=301,L]
      #archive
      RewriteRule ^([0-9]{4})_([0-9]{2})_01_archive\.html$ /date/$1/$2 [R=301,L]
    </IfModule>
    #END old blog

    2010.12.12 / 2 条评论 / 2,055 次点击 / 分类: 所谓技术

  • 用.htaccess设置PHP错误显示

    使用.htaccess可以在某种程度上更改PHP的错误显示的设置,实际上,相当于更改PHP.ini的参数,很是方便。

    将以下相应代码放到对应目录中的.htaccess文件,即可实现相应功能。

    关闭错误显示:

    php_flag display_startup_errors off
    php_flag display_errors off
    php_flag html_errors off
    php_value docref_root 0
    php_value docref_ext 0

    只显示PHP错误:

    php_flag  display_errors        on
    php_flag  display_startup_errors on
    php_value error_reporting        2047

    其中,“2047”为要显示的错误的级别,详细表格如下:

    1 E_ERROR
    2 E_WARNING
    4 E_PARSE
    8 E_NOTICE
    16 E_CORE_ERROR
    32 E_CORE_WARNING
    64 E_COMPILE_ERROR
    128 E_COMPILE_WARNING
    256 E_USER_ERROR
    512 E_USER_WARNING
    1024 E_USER_NOTICE
    2047 E_ALL
    2048 E_STRICT
    4096 E_RECOVERABLE_ERROR 

    要把错误保存到日志文件中,可以这样设置:

    # enable PHP error logging
    php_flag  log_errors on
    php_value error_log  /home/path/public_html/domain/PHP_errors.log

    然后,可以设置不允许访问.log文件:

    # prevent access to PHP error log
    <Files PHP_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    设置错误日志的最大体积,以bytes为单位:

    # general directive for setting max error size
    log_errors_max_len integer

    综合上述,.htaccess的PHP错误显示设置汇总:

    # PHP error handling for production servers
    
    # disable display of startup errors
    php_flag display_startup_errors off
    
    # disable display of all other errors
    php_flag display_errors off
    
    # disable html markup of errors
    php_flag html_errors off
    
    # enable logging of errors
    php_flag log_errors on
    
    # disable ignoring of repeat errors
    php_flag ignore_repeated_errors off
    
    # disable ignoring of unique source errors
    php_flag ignore_repeated_source off
    
    # enable logging of php memory leaks
    php_flag report_memleaks on
    
    # preserve most recent error via php_errormsg
    php_flag track_errors on
    
    # disable formatting of error reference links
    php_value docref_root 0
    
    # disable formatting of error reference links
    php_value docref_ext 0
    
    # specify path to php error log
    php_value error_log /home/path/public_html/domain/PHP_errors.log
    
    # specify recording of all php errors
    php_value error_reporting 999999999
    
    # disable max error string length
    php_value log_errors_max_len 0
    
    # protect error log by preventing public access
    <Files /home/path/public_html/domain/PHP_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    以下则是适合开发者应用的设置:

    # PHP error handling for development servers
    php_flag display_startup_errors on
    php_flag display_errors on
    php_flag html_errors on
    php_flag log_errors on
    php_flag ignore_repeated_errors off
    php_flag ignore_repeated_source off
    php_flag report_memleaks on
    php_flag track_errors on
    php_value docref_root 0
    php_value docref_ext 0
    php_value error_log /home/path/public_html/domain/PHP_errors.log
    php_value error_reporting 999999999
    php_value log_errors_max_len 0
    
    <Files /home/path/public_html/domain/PHP_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
    </Files>

    本文大部分内容参考这篇文章:How to Enable PHP Error Logging via htaccess,大家有兴趣的话可以阅读英文原版。

    2010.01.06 / 1 条评论 / 2,392 次点击 / 分类: 所谓技术

  • 使用.htaccess判断蜘蛛及对域名进行重定向

    写了一段代码,首先判断是不是当前所用域名,然后判断是否是蜘蛛,如果两者同时成立,则转到统一的域名下。这个转向主要通过Rewrite来实现,说实话,ReWrite的功能很强大。

    .htaccess代码如下:

    #BEGIN Redirect all the URL to the specific domain fot bots
    <IfModule mod_rewrite.c> 
        RewriteEngine On
        RewriteBase /
        RewriteCond %{HTTP_HOST} !^blog.creke.net [NC]
        RewriteCond %{HTTP_USER_AGENT} (baiduspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|robozilla|msnbot) [NC]
        RewriteRule ^(.*)$ http://blog.creke.net/$1 [R=301,L]
    </IfModule>
    #END

    第一个RewriteCond的意思是,如果当前域名不是blog.creke.net,[NC]即不分大小写;第二个RewriteCond的意思是,通过判断Useragent来检测当前请求网页的是不是网络蜘蛛,用“|”代表或逻辑来匹配列表中每一个蜘蛛的Useragent的关键字,如果匹配,则当前请求者为网络蜘蛛。如果两个重写条件同时成立,则301重定向到当前域名的对应网页。

    2009.11.04 / 4 条评论 / 4,175 次点击 / 分类: 所谓技术

  • 在线制作.htaccess

    在线制作.htaccess
    这个网站可以在线制作.htaccess。
    目前提供可制作的配置指令有:文件列表是否可见、Basic认证、自定义错误页面路径、配置预设页面、设置WWW(统一地址)、设置永久及临时跳转页面、设置存取限制的网址(防盗链)。完成设置后复制生成的内容到记事本,存储为 .htaccess 即可使用。
     

    2009.08.10 / 暂无评论 / 912 次点击 / 分类: 所谓技术

  • Apache服务器支持.htaccess和rewrite和virtualhost

    Apache服务器支持.htaccess和rewrite和virtualhost
     
    最近想升级维护Creke ACG,但是以前自己配置的AMP有些功能不支持,所以要自己动手让他支持。

    支持.htaccess
      如何让自己的本地APACHE服务器支持".htaccess"呢?其实只要简单修改一下apache的httpd.conf设置

    就可以让APACHE支持.htaccess了,来看看操作

      打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找

    <Directory />
      Options FollowSymLinks
      AllowOverride None
    </Directory>

      改为

    <Directory />
      Options FollowSymLinks
      AllowOverride All
    </Directory>

      就可以了

    支持rewrite:
    LoadModule rewrite_module modules/mod_rewrite.so

    支持virtualhost:
    在文件末尾加上
    include "conf/vhost.conf"
    然后在httpd.conf新建一个vhost.conf文件。在该配置文件写上虚拟主机的配置就行。
    #NameVirtualHost *:80
    #
    # NOTE: NameVirtualHost cannot be used without a port specifier
    # (e.g. :80) if mod_ssl is being used, due to the nature of the
    # SSL protocol.
    #

    #
    # VirtualHost example:
    # Almost any Apache directive may go into a VirtualHost container.
    # The first VirtualHost section is used for requests without a known
    # server name.
    #
    #<VirtualHost *:80>
    #    ServerAdmin webmaster@dummy-host.example.com
    #    DocumentRoot /www/docs/dummy-host.example.com
    #    ServerName dummy-host.example.com
    #    ErrorLog logs/dummy-host.example.com-error_log
    #    CustomLog logs/dummy-host.example.com-access_log common
    #/VirtualHost>
    比如我,就是:

    NameVirtualHost *

    <VirtualHost *> #默认情况
        DocumentRoot "w:/www"
    </VirtualHost>

    <VirtualHost *> #Creke ACG站点
        DocumentRoot "w:/www/creke_acg"
        ServerName acg.creke.net
    </VirtualHost>

    虽然说的是“NOTE: NameVirtualHost cannot be used without a port specifier”,但我仍然这样子配

    置成功没有报错,也没有警告。而且可以继续使用80和21500两个端口来访问网站。看来有空要研究一下

    http://httpd.apache.org/docs/2.2/vhosts/,看看是否新版本中有和旧版本不同的说明了。

    这样,再把本地的host文件暂时添加acg.creke.net为127.0.0.1,就可以在本地调试升级Creke ACG了。

    2009.06.18 / 暂无评论 / 3,710 次点击 / 分类: 所谓技术