发现问题

网站主页可以正常访问,但是内页全部显示Apache的报错“找不到对象”

资源和静态页面可以自由访问。后台也是正常。

分析问题

考虑到静态页面没有问题,我想因该是WordPress的老毛病:伪静态解析问题。WordPres静态化做得不好,只能生成首页和文章页静态页面,所以只能对整站实现伪静态化。在网页空间不存在的的目录底下生成发给浏览器的伪静态页面。(比静态多个步骤)

1、框架伪静态,这种是非常简单而且也是非常便于识别的,它的原理比较简单,就是做一个静态的主框架页面,然后把动态的内容链入副框架内,这个单从它的URL就可以看出眉目,如果整个网站的URL都是一样的,那么就一定是框架伪静态的。
2、利用组件把asp、aspx、PHP等后辍显示为htm或html,这种方法的原理是有一点难度的,它主要是利用一个组件强制性的把asp文件的后辍显示为htm,对于客户来说,它是很难分辨的,因为显示的链接的确是以.htm结尾的,不过如果仔细观察它的链接,也能看出来一些眉目,因为这种URL是很奇怪的,中间带有asp的样子,而且后面还有些参数,不过参数的结果已经被隐藏掉了。
如何解决WordPress内页404的问题
伪静态的URL
如何解决WordPress内页404的问题
网页空间里真实存在的文件夹URL

解决方法

仔细回想了近期对Blog做的操作,发现%localhosts%/.htaccess伪静态规则配置文件被我误删。服务器空间极其有限所以向来不进回收站。自己重新搞一个吧。。。

ACL语法我刚刚在了解。Apache的.htaccess和一般ACL脚本类似,可以限制或者控制某个或某些IP或者Mac地址的设备访问。一般情况下外部是无权打开的。

RewriteEngine On|Off             #设置功能的开启与关闭
RewiteBase var1

#设置功能的路径,这一步是设置范围,var1是路径,基于url的,也就是根目录(不是当前目录)
RewriteCond var1 var2 [flag]

#设置功能的匹配的条件,这一步是判断,var1是传入的字符串,var2是待匹配的字符串,[flag]是标志
RewriteRule var1 var2 [flag]

#设置功能的重写规则,这一步是执行,var1是改变前的样子,var2是改变后的样子

 

我技能不足,拷贝了wp原版的

放出当前使用的htaccess

1
2
3
4
5
6
7
8
9
10
11
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

恢复文件后问题解决。本来只是删个.maintenance的事。。。


聚拙技以为才,集芙蓉以为裳