因為前陣子改版了部落格,所以對apache mod_rewrite有更多的認識,因為要將舊版的部落格連結相容可連至新版的wordpress,所以花了不少心力去調整網址的對應,在此分享一下~給有需要的人少一點摸索的時間
#阻止沒有referrer來源鏈接的垃圾評論
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*herolin.webhop.me.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
以上這是去找來的,blog最討厭就是那種垃圾廣告,加了上面這些,應該能阻擋一些簡單的垃圾機器人吧,再來下面這段,是我將重複的簡略後的內容,主要就是在進行一些網址的轉換
#轉址
RewriteCond %{HTTP_HOST} !^herolin.webhop.me$ [NC]
RewriteRule ^(.*)$ http://herolin.webhop.me/$1 [L,R=301]
因為在這次也將原本以http://herolin.mine.nu為主的網址,改成以http://herolin.webhop.me為主,因為http://herolin.mine.nu好像蠻多地方都有被擋~所以還是改成用另一個為主要的網址,所以上述就是在做301的轉址~以便http://herolin.mine.nu還能連到部落格~並且又不會讓搜尋引擎認為你故意弄兩個一模一樣的網站!
#舊blog轉址
RewriteRule ^rss$ /feed [R=301,NC,L]
RewriteRule ^notice/83$ /About-Hero [R=301,NC,L]RewriteRule ^category/專業技術/net$ /category/專業技術/net-專業技術 [R=301,NC,L]
RewriteRule ^category/專業技術/ajax$ /category/專業技術/ajax-專業技術 [R=301,NC,L]
RewriteRule ^archive/([0-9]{4})([0-9]{2})$ entry/$1/$2? [R=301,NC,L]
再來這段就是針對舊的部落格有些連結和新版的無法對應,所以用這樣對應的方式進行對應,注意,如果你的網址有中文字,而你要將中文字寫到.htaccess裡,記得你的.htaccess要存成UTF-8格式並且是沒有BOM的就可以啦
RewriteCond %{QUERY_STRING} ^page=([0-9]+)$
RewriteRule ^$ /page/%1? [R=301,NC,L]
最後這段,是因為分頁的網址寫的不一樣,所以要再進行調整將參數轉換成新版的靜態網址,這期間TRY了很多也參考了很多資料才弄出來,mod_rewrite真的是很強大,除了上述轉址之外還可以設定cache及傳輸壓縮,有興趣的可以參考以下連結,有更多的介紹及說明。
最後,提醒各位一點,當你寫好你的.htaccess時一定要備份一下, 因為wordpress在設定固定網址時會將.htaccess初始化,小弟就忘了備份,所以又多花了一些時間重摸索,切記切記呀!!
參考資料:
最近專案之中用了太多的Ajax,所以瀏覽器的問題也愈來愈多了
像有些效果,需要在IE設定需在「檢查儲存的畫面是否有較新的版本」時選擇每次造訪網頁時才能正常,所以我們可以在使用者使用前做一個檢測網頁,檢查所需的相關設定及元件是否有安裝上去。目前在銀行及證券業所提供的網路服務中,就常會有這樣的檢測網頁,那要如何做呢?
去網路上找到了解答,在此整理並記錄下來,給自己及大家一個參考:
機碼: HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\SyncMode5
SyncMode5 參數設定值說明:
每次造訪網頁時
|
3
|
每次啟動 Internet Explorer 時
|
2
|
自動
|
4
|
無
|
0
|
這是我寫的一個方法,透過WScript.Shell 進行查詢
function AutoRefreshCheck(){
var autorefreshsite_str =””;
try{
var WshShell = new ActiveXObject(“WScript.Shell”);
regKey = “HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\SyncMode5”
temp=WshShell.RegRead(regKey);
switch(temp){
case 2:
autorefreshsite_str = “每次啟動 Internet Explorer 時”;
break;
case 3:
autorefreshsite_str = “每次造訪網頁時”;
break;
case 4:
autorefreshsite_str = “自動”;
break;
case 0:
autorefreshsite_str = “無”;
break;
default:
autorefreshsite_str = “無法查明(“+temp+”)”;
}
}catch(e){ //找不到信任網站
autorefreshsite_str = “無法檢測,請您自我檢查(請在上方選單工具>網際網路選項>瀏覽歷程記錄>設定),是否是設定每次造訪網頁時”;
}
return autorefreshsite_str;
}
執行這個方法,可得到目前的IE設定值,如果要改寫設定,參考網站有些了幾個用VB Script or VB.Net的方法,在此只介紹用執行reg檔案的方式更新,只要讓人下載並執行以下檔案內容,即可自動更新為 每次造訪網頁,內容如下:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
“SyncMode5″=dword:00000003
Update : 原本記錄是字串,後來在使用才發現是要用DWORD 8/1
記得要提醒重新啟動瀏覽器才會生效喔!!
參考網頁:
http://tw.myblog.yahoo.com/hammerchou/article?mid=1167&prev=1176&next=1132
最近幫客戶系統製作安裝光碟時,在安裝Tomcat發現如果不是使用Tomcat官網下載的exe安裝檔案,透過Tomcat\bin 下的service 進行服務安裝時,裝好的服務預設啟動模式為手動
找了一下資料,發現有二種解法
1.直接從service.bat 下手,請用編輯器打開 找尋 「 :installed 」在這執行腳本中的
“%EXECUTABLE%” //US//%SERVICE_NAME% ++JvmOptions “-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties” –JvmMs 256 –JvmMx 512
加上 –Startup=auto ,結果如下:
“%EXECUTABLE%” //US//%SERVICE_NAME% ++JvmOptions “-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties” –JvmMs 256 –JvmMx 512 –Startup=auto
這樣執行service install tomcat5 後就預設啟動模式為自動啦
2.第二個方法,是透過window的指令下手,請執行
sc config service_name start=auto
這樣也行,所以可以把這指令寫在安裝步驟也可以達到預期效果
以上執行在搭配Tomcat 5.5 測試過~是ok的!!
如果要調整安裝在Windows 上Tomcat服務的參數可以在console mode執行以下指令即可進行更改啟動參數
C:\> tomcat6 //US//Tomcat6 –Description=”Apache Tomcat Server – http://tomcat.apache.org/ ” \
C:\> –Startup=auto –Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar \
C:\> –JvmMx=512
重點在於使用 //US// (Update service parameters) 指令進行更新參數作業,可使用詳細參數如下:
ParameterName |
Default |
Description |
–Description |
|
Service name description (maximum 1024 characters) |
–DisplayName |
ServiceName |
Service display name |
–Install |
procrun.exe //RS//ServiceName |
Install image |
–Startup |
manual |
Service startup mode can be either auto or manual |
–DependsOn |
|
List of services that this service depend on. Dependent services are separated using either # or ; characters |
–Environment |
|
List of environment variables that will be provided to the service in the form key=value. They are separated using either # or ; characters |
–User |
|
User account used for running executable. It is used only for StartMode java or exe and enables running applications as service under account without LogonAsService privilege. |
–Password |
|
Password for user account set by –User parameter |
–JavaHome |
JAVA_HOME |
Set a different JAVA_HOME then defined by JAVA_HOME environment variable |
–Jvm |
auto |
Use either auto or specify the full path to the jvm.dll. You can use the environment variable expansion here. |
–JvmOptions |
-Xrs |
List of options in the form of -D or -X that will be passed to the JVM. The options are separated using either # or ; characters. |
–Classpath |
|
Set the Java classpath |
–JvmMs |
|
Initial memory pool size in MB |
–JvmMx |
|
Maximum memory pool size in MB |
–JvmSs |
|
Thread stack size in KB |
–StartImage |
|
Executable that will be run. |
–StartPath |
|
Working path for the start image executable. |
–StartClass |
|
Class that will be used for startup. |
–StartParams |
|
List of parameters that will be passed to either StartImage or StartClass. Parameters are separated using either # or ; character. |
–StartMethod |
Main |
Method name if differs then main |
–StartMode |
executable |
Can one of jvm java or exe |
–StopImage |
|
Executable that will be run on Stop service signal. |
–StopPath |
|
Working path for the stop image executable. |
–StopClass |
|
Class that will be used on Stop service signal. |
–StopParams |
|
List of parameters that will be passed to either StopImage or StopClass. Parameters are separated using either # or ; character. |
–StopMethod |
Main |
Method name if differs then main |
–StopMode |
executable |
Can one of jvm java or exe |
–StopTimeout |
No Timeout |
Defines the timeout in seconds that procrun waits for service to exit gracefully. |
–LogPath |
working path |
Defines the path for logging |
–LogPrefix |
jakarta_service |
Defines the service log filename |
–LogLevel |
INFO |
Defines the logging level and can be either error, info, warn or debug |
–StdOutput |
|
Redirected stdout filename |
–StdError |
|
Redirected stderr filename |
請依版本參考相關文件:
http://tomcat.apache.org/tomcat-5.5-doc/windows-service-howto.html
http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html
最近升級了一台主機的web server
採用的是appserv包裝好的 apache套件
先前都是它apache 1.3 的套件,很容易一安裝就可以上工了
而這次改用他最新版本(使用的是v2.5.10), 主要不一樣是採用了apache 2.x的
一樣也是很容易安裝上去,相關的搭配一樣都包裝好了
真是方便呀!!
不過,在使用上發覺有點不太一樣,我的問題是出在apache上
原本virtualhost 是寫在httpd.conf裡
不過在apache 2.x之後,分割了很多檔案
所以要在extra/httpd-vhosts.conf 裡面去去寫virtualhost 的設定描述
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.x
DocumentRoot “C:/Apache2.2/docs/dummy-host2.x”
ServerName dummy-host2.x
ErrorLog “logs/dummy-host2.x-error.log”
CustomLog “logs/dummy-host2.x-access.log” common
</VirtualHost>
而寫完後重啟,什麼 怎麼還是沒有反應呢?????
原來~~~在httpd.conf裡 include httpd-vhosts.conf 這段設定是被註解掉的
所以,我改了沒反應嘛~~真是豬頭( 都分割好了~~幹嘛不全都include 呢真是不便呀)
好,再次調整後~~重啟…怎麼說權限不足呢 =.=|||
沒想到要針對 virtualhost的目錄去開放權限才行..
(記得以也apache 1.3不用呀~~不過有可能先前都是指virtualhost 指向www/之中吧所以已經設定過了)
所以再設定目錄權限
<Directory “C:\www\www1”>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
好,再次重啟~~這下終於都ok 啦!!
雖然遇到小小問題,不過還是很不錯用啦~~
在這裡有發現當設定virtualhost後,原本default document root 會沒有用
就是說用IP連線時不會指到default document root,這我印象中就和apache 1.3不同了吧
如果和我有一樣的需求,想用IP 指到default page的話,那就是再設定一個virtualhost就好!只是這個不要加上 servername就行啦!!
後語:
沒想到我用了apahce 1.3的version那麼久呀~~不知是食古不化
還是對它有信心~~不過我能確信~~一定是懶啦~^^
以下是在解惑時有參考過的網址啦:
http://blog.egtravel.tw/2008/10/wordpress/appserv-virtualhost-setup/
http://www.walkone.com.tw/blog/index.jsp?user_id=wolfphp&subject_id=4443
近期留言