WordPress Upload New Media “HTTP error”

版本是 3.2.1
在原本的服务器上运行无错,移植到新的服务器就有这个问题,大概就是服务器配置的缘故了。
官方上也相关的文章。http://wordpress.org/support/topic/25-imagemedia-uploader-problems

是apache Mod_Security 的缘故。如果你能够修改你服务器的httpd.conf文件的话,删除里面关于mod_security部分就可以了。不过多数wordpress玩家是没有权限修改这个文件的,那就只好修改.htaccess文件了。在.htaccess文件里面加上一行:

SecFilterEngine Off
SecFilterScanPOST Off

这样就可以关闭 Mod_Security。

Lighttp Rewrite Rule For WordPress

根目录安装是这样的:

url.rewrite-once = (
"^/(.*)?/?files/$" => "index.php",
"^/(.*)?/?files/(.*)" => "wp-content/blogs.php?file=$2",
"^/(wp-.*)$" => "$1",
"^/([_0-9a-zA-Z-]+/)?(wp-.*)" => "$2",
"^/([_0-9a-zA-Z-]+/)?(.*\.php)$" => "$2",
"." => "index.php"
)

wordpress 可以自动实现 域名无 www 向有的跳转,其他程序可以依靠:

$HTTP["host"] !~ "^(www|mail|mysql)\.(domain\.org)$" {
  $HTTP["host"] =~ "^(.+\.)?(domain\.org)$" {
    url.redirect = (
      "^/(.*)" => "http://www.%2/$1"
    )
  }
}

实现跳转。

Ubuntu下启动Apache对.htaccess 的支持

步骤:

1. 终端运行

sudo a2enmod

程序提示可供激活的模块名称,输入:

rewrite

2. 修改/etc/apache2/sites-enabled/000-default (该链接指向的是站点配置文件)
把(默认的www目录、或者需要应用.htaccess的目录)下的AllowOverride 属性改为All,保存。
3. 重新加载apache

sudo /etc/init.d/apache2 restart

收工。

Debian/Ubuntu Apache Mod_Rewrite 安装

在终端中执行,我常常是使用putty 来远程连接的,这样省的在2个操作界面切换。

#debian
a2enmod rewrite
#ubuntu
sudo a2enmod rewrite

指令后,即启用了 Mod_rewrite 模块。

另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load 来打开 Mod_rewrite 模块。用指令操作就是:

#debian
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
#ubuntu
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

一点小提示

事实上,当在Debian or Ubuntu 中采用上述做法并重启了 Apache 服务后,仍然无法正常 rewrite 网址。这里,还有一点需要注意的地方:

sudo vim /etc/apache2/sites-enabled/000-default

将其中的:

AllowOverride None

修改为:

AllowOverride All

上面的 /etc/apache2/sites-enabled/000-default 实则为 /etc/apache2/sites-available/default 的连接。而 AllowwOverride None 则会完全忽略 .htaccess 文件,自然其中所定义的 rewrite 规则也就不能生效了。

最后,别忘了使用下列指令来重启 Apache:

#debian
/etc/init.d/apache2 restart
#ubuntu
sudo /etc/init.d/apache2 restart

Windows 下 Apache Virtualhost 设置

Apache with virtual host on Windows
一个很平常的问题,windows下怎么在apache上设置 virtualhost (虚拟主机),其实很简单。

这儿以xampp 为例。
第一,设置域名解析。
我们需要打开 host 这样一个文件,不同单位 windows 版本,其位置也不近相同,
Windows 3.1/95/98/ME:
c:\windows\hosts

Windows NT/2000/XP Pro:
c:\winnt\system32\drivers\etc\hosts or c:\windows\system32\drivers\etc\hosts

Windows XP Home:
c:\windows\system32\drivers\etc\hosts

Windows Vista:
C:\Windows\System32\Drivers\etc\hosts

用记事本打开 host 文件,如果你是vista,需要以administrator 运行记事本,在最下面添加:

127.0.0.1 wordpress.do
127.0.0.1 websitebaker.do

左边的ip 是这台电脑的IP地址,右边的是虚拟主机名(设置成功后就可以以这个虚拟主机名访问目录)。

第二,编辑httpd-vhosts.conf

用记事本打开httpd-vhosts.conf,该文件在xampp\apache\conf\extra,把下面的代码复制进去。

<VirtualHost *:80>
DocumentRoot /xampplite/htdocs
ServerName localhost
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName websitebaker.do #虚拟主机(virtualhost)
DocumentRoot D:/xampp/htdocs/websitebaker #网站物理地址
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory D:/xampp/htdocs/websitebaker>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName wordpress.do
DocumentRoot D:/xampp/htdocs/wordpress
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory D:/xampp/htdocs/wordpress>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

然后把 #NameVirtualHost *:80 前面的“#”去掉。保存文件退出。

第三,重新启动 apache service。

第四,OK,现在你可以用 http://wordpress.do 代替原来的http://localhost/wordpress 访问网站了.

htaccess 的一点用法

LAMP 环境里可以很容易的通过 .HTACCESS 进行一些网站的设置
网站引索:

DirectoryIndex index.php index.htm index.html

域名重定向,将yaoyingying.com 重定向到 www.yaoyingying.com

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

下面这些对静态页网站的 URL 优化就有很大帮组了,取好每个页面文件的名字,通过 下面的规则进行目录结构式优化。

RewriteRule ^([a-z]+)\/([a-z0-9]+)-([a-z0-9]+)\/$            $1_$2-$3.php   [QSA,L]
RewriteRule ^([a-z]+)\/([a-z]+)-([a-z]+)\/$            $1_$2-$3.php   [QSA,L]
RewriteRule ^([a-z]+)\/([a-z]+)-([a-z]+)-([a-z]+)\/$            $1_$2-$3-$4.php   [QSA,L]
RewriteRule ^([a-z]+)-([a-z]+)\/([a-z]+)\/$            $1-$2_$3.php   [QSA,L]
RewriteRule ^([a-z]+)-([a-z]+)\/([a-z]+)-([a-z]+)\/$   $1-$2_$3-$4.php   [QSA,L]
RewriteRule ^([a-z]+)-([a-z]+)\/([a-z]+)-([a-z]+)-([a-z]+)\/$   $1-$2_$3-$4-$5.php   [QSA,L]

RewriteRule ^([a-z]+)\/([a-z0-9]+)\/$            $1_$2.php  [QSA,L]
RewriteRule ^(.*)\/$                            $1.php   [QSA,L]

Apache 通过 .htaccess 对目录加密


例如有/home/www/website/dir1 目录,需要对/dir1/加密访问,必须输入口令密码才能访问。

在这种情况下,要是/dir1/加密可以通过 .htaccess 和 .htpasswd 的设置来实现

在/home/www/website/dir1下建立.htaccess文件
vi /home/test1/a/.htaccess
文件内容如下
AuthName “===LOGIN===”   #随便填写
AuthType Basic
AuthUserFile /home/www/website/dir1/.htpasswd
Require valid-user username
保存退出

账号生成口令
htpasswd -c /home/test1/a/.htpasswd username 系统会要求输入两遍该用户的密码。

修改密码也是同样 htpasswd -c /home/test1/a/.htpasswd username

Apache的rewrite的设置参数

Apache的rewrite的重写非常常用,现总结了一下.

Apache mod_rewrite规则重写的标志一览

R[=code](force redirect) 强制外部重定向
强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定,将用缺省的302 HTTP状态码。
F(force URL to be forbidden)禁用URL,返回403HTTP状态码。 继续阅读“Apache的rewrite的设置参数”