用的是Apache 2.2 / Linux Mint13 / wordpress 3.4.1.
网上的解决办法都说只要在文件/etc/apache2/ports.conf中添加如下行:
NameVirtualHost *:1234
Listen 1234
然后在目录/etc/apache2/sites-available为wordpress站点新建一个virtual host:
<VirtualHost *:1234>
ServerName wordpress.com
ServerAdmin webmaster@wordpress.com
DocumentRoot /home/tristan/workspace/wordpress
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/tristan/workspace/wordpress/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
然后把wordpress.com名称解析添加到/etc/hosts文件中,
127.0.0.1 wordpress.com
这样当域名解析时会直接把wordpress.com解析为127.0.0.1,而不是公网上的那个真正的wordpress官网的IP地址。
我试了以后在浏览器中输入:1234,仍然收到301 (permanent removed)错误代码,然后直接跳转到apache服务器的默认index页面。
这个需要打开浏览器的脚本debugger,然后检测请求发送与响应。
然后,我用netstat检测端口有没有打开,发现端口已经打开了。
然后我又用telnet尝试连接:1234,
telnet 1234
GET / HTTP/1.0
(注意,输完后要按两次回车)
可以得到响应。
开始一直以为apache2没配对,看了那个官方文档,英文的,中文的都看了,没发现有啥不对劲。后来又怀疑端口是不是有问题,换了其他端口,也没发现问题。
在网上找了半天,终于发现是wordpress的配置8对。天杀的,网上的那些答案太抽象了。
原来要再wp-config.php文件中修改两个变量的值:
define('WP_SITEURL', 'http://wordpress.com:1234'); define('WP_HOME', 'http://wordpress.com:1234');
这两个全局变量需要比较新的wordpress,应该版本大于2.2哈。如果不是的话,那就直接修改数据库中表wp_options。update wp_options set option_value=N'http://wordpress.com:1234' where option_name='siteurl'; update wp_options set option_value=N'http://wordpress.com:1234' where option_name='home';