apache环境之困扰,Rewrite导致无法加载多个不同的.html文件
又是一个项目,为访问多个纯静态html页面h5游戏页,能够做一些简单分享和跳转即可。原本是一个简单得不能的项目,但是却多生了事端。
我按照apache的惯例,将文件上传到服务器的DocumentRoot目录,进行测试了。
刚开始使用目录下index.html访问该游戏,完全OK,测了一段时间,换成另一个文件index2.html,却不行了。报了500错误。
我以为或者我们都以为是html页面写错了,于是反复改语法,再试再试,结果却仍是不行。最后到只加载一行<h1>hello, world</h1>,也不行。焦头烂额啊,咋办呢?
1. 另外在服务器上单独新建一个a.html。输入简单的页面元素访问,Not ok,500错误依然!
2. 将同样的文件拿到本地环境运行,跑得飞快。这时,已经开始怀疑是服务器的问题了,但是没有办法,想多试试本地,继续在本地新建文件访问,结果本地服务器报了个403错误,乱七八糟的搞了一通,没有改好。算了,还是回测试服务器弄吧。
3. 新建readme.txt访问,结果没有访问到。这最终被证明是大小写没有写对的原因,哎呀,我去。
4. 新建test.php文件访问,结果一切正常。从这一刻开始,认为服务器只解析.php文件了。但是.js文件却又是能访问的,这。。。
<?php echo "hello, world!";
5. 查看httpd-vhosts.conf文件。确认没有什么特殊的配置。
<VirtualHost *:80> DocumentRoot /www/web/m_admin/public_html #ServerName admin.mobanker.com ServerName 192.168.0.31 ServerAlias wx.sd.com <Proxy *> # #Order deny,allow # Order allow,deny Allow from all </Proxy> ErrorDocument 400 /errpage/400.html ErrorDocument 403 /errpage/403.html ErrorDocument 404 /errpage/404.html <IfModule mod_deflate.c> DeflateCompressionLevel 7 AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php AddOutputFilter DEFLATE css js html htm gif jpg png bmp php </IfModule> ProxyPass /eagleeye http://192.168.1.5:33008/eagleeye ProxyPassReverse /eagleeye http://192.168.1.5:33008/eagleeye </VirtualHost> <Directory /www/web/m_admin/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory>
6. 查看http.conf文件
# 如下参数是通过命令 cat /etc/httpd/conf/httpd.conf | grep -v "^#" | grep -v "^$" 筛选出来的
ServerTokens OS ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 120 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 15 <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule> <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> Listen 80 LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so LoadModule authn_anon_module modules/mod_authn_anon.so LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so LoadModule usertrack_module modules/mod_usertrack.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule info_module modules/mod_info.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule cache_module modules/mod_cache.so LoadModule suexec_module modules/mod_suexec.so LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule file_cache_module modules/mod_file_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule cgi_module modules/mod_cgi.so LoadModule version_module modules/mod_version.so Include conf.d/*.conf User apache Group apache ServerAdmin root@localhost ServerName 127.0.0.1:80 UseCanonicalName Off DocumentRoot "/var/www/html" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> DirectoryIndex index.html index.html.var AccessFileName .htaccess <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> TypesConfig /etc/mime.types DefaultType text/plain <IfModule mod_mime_magic.c> MIMEMagicFile conf/magic </IfModule> HostnameLookups Off EnableSendfile off ErrorLog logs/error_log LogLevel warn LogFormat "%T %h %v %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O \"%{X-Forwarded-For}i\" " combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog logs/access_log combined ServerSignature On Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons"> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all </Directory> <IfModule mod_dav_fs.c> # Location of the WebDAV lock database. DAVLockDB /var/lib/dav/lockdb </IfModule> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin"> AllowOverride None Options None Order allow,deny Allow from all </Directory> IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip AddIconByType (TXT,/icons/text.gif) text/* AddIconByType (IMG,/icons/image2.gif) image/* AddIconByType (SND,/icons/sound2.gif) audio/* AddIconByType (VID,/icons/movie.gif) video/* AddIcon /icons/binary.gif .bin .exe AddIcon /icons/binhex.gif .hqx AddIcon /icons/tar.gif .tar AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip AddIcon /icons/a.gif .ps .ai .eps AddIcon /icons/layout.gif .html .shtml .htm .pdf ReadmeName README.html HeaderName HEADER.html IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t AddLanguage ca .ca AddLanguage zh-CN .zh-cn AddLanguage zh-TW .zh-tw LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW ForceLanguagePriority Prefer Fallback AddDefaultCharset UTF-8 AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddHandler type-map var AddType text/html .shtml AddOutputFilter INCLUDES .shtml Alias /error/ "/var/www/error/" <IfModule mod_negotiation.c> <IfModule mod_include.c> <Directory "/var/www/error"> AllowOverride None Options IncludesNoExec AddOutputFilter Includes html AddHandler type-map var Order allow,deny Allow from all LanguagePriority en es de fr ForceLanguagePriority Prefer Fallback </Directory> </IfModule> </IfModule> BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully BrowserMatch "MS FrontPage" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully BrowserMatch "^gnome-vfs/1.0" redirect-carefully BrowserMatch "^XML Spy" redirect-carefully BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully <IfModule mod_proxy.c> ProxyRequests On <Proxy *> Order allow,deny Allow from all </Proxy> NameVirtualHost *:80
6. 中途查找了一个SSI相关的知识,还加了下.html的后缀。把根目录给改过,结果.html能访问了,.php却不能访问了,哎,还是只能撤消回来。
7. 去找运维同事解决,未果。他也忙也不忍心一直耽搁别人。不过通过查看错误日志了解到了一些端倪。
tail -f access_log error_log
8. 发现很多文件都会去访问某个php文件,怀疑请求被转发掉了。然后想到了apache的.htaccess文件,去查看,终于知道了原因,果然原来请求已被路由至有错误的文件去了。
RewriteEngine On^M RewriteCond %{REQUEST_URI} !zq^M RewriteRule \.(pfx|p12|der|jks|rsa|cer|cert|crt|csr|pem|sql)$ - [F,L]^M RewriteRule ^rest/(.*)$ /rest.php/$1 [L]^M RewriteRule ^(app|wechat)/(.*)$ /uzone/rest.php/$1/$2 [L] #no rewrite sth #RewriteRule ^([a-z0-9_~%~.~+]+)/index([0-9]+).html /index.php\?$1&page=$2 [L]^M RewriteRule ^([a-z0-9_~%~.~+]+)/a.html /index.php\?$1/$2 [L]^M RewriteRule ^([a-z0-9_~%~.~+]+)/a([0-9]+).html /index.php\?$1/$2 [L]^M RewriteRule ^([a-z0-9_~%~.~+]+)/a([0-9]+).html\?(.*) /index.php\?$1/$2&$3 [L]^M RewriteRule /([a-z0-9_~%~.~+]+)/index.html\?(.*) /index.php\?$1&$2 [L]^M RewriteRule ^(.*)/u/([0-9]+)/(.*)$ /index.php\?u&$2&$3 [L]^M RewriteRule ^(.*)/u/([0-9]+)/(.*)/$ /index.php\?u&$2&$3 [L]^M RewriteRule ^(.*)/u/([0-9]+)$ /index.php\?u&$2 [L]^M RewriteRule ^(.*)/u/([0-9]+)/$ /index.php\?u&$2 [L]^M RewriteRule /([a-z0-9_~%~.~+]+)/index.html\?(.*) /index.php\?$1&$2 [L]^M RewriteRule /([a-z0-9_~%~.~+]+)/index([0-9]+).html\?(.*) /index.php\?$1&page=$2&$2 [L]^M RewriteRule ^channel/(.*)$ /index.php\?$1 [L]^M RewriteRule ^data/upes/images/(.*)$ /dataacc/ime.php\?%{QUERY_STRING} [L]^M RewriteRule ^data/cms/content/info/(.*)$ /dataacc/ime.php\?%{QUERY_STRING} [L]^M RewriteRule ^voices/record/(.*)$ /dacc/image.php\?%{QUERY_STRING} [L]^M RewriteRule ^pay/(.*)$ /index.php [L]^M ^M Options -Indexes^M ^M # zhima v3^M RewriteCond %{QUERY_STRING} \bstate=v3@^M RewriteRule ^alipay/auth/.*$ alipay/auth_v3/ [QSA,L]^M
将该路由注释去除后,问题得以解决。
哎,总算完结。凡事还得自己努力啊! JAVA还在好好学习中,我靠后面还有考试!