Mały, dirty code, ale działa – przynajmniej dla zmiany kilkuset regułek. Uwaga – czasem przydaje się na output dać sort -r , gdyż niektórzy naprawdę lubią utrudniać sobie życie dając RewriteRule wszystkiego na index.php – na samym początku :)
Konieczna jest mała zmiana nazwa-domeny na coś własnego – co może, ale nie musi występować :)
#!/usr/bin/env python
import sys, re, string
def replacer(str):
return str.replace('nazwa-domeny','/').replace('//','/').replace('$','')
if len(sys.argv) < 2:
print 'Usage: %s old-htaccess' % sys.argv[0]
else:
try:
f = open('%s' % sys.argv[1], 'r')
for l in f.readlines():
linia = l.split('\n')[0]
if re.search("(R|r)edirect", linia):
redir = linia.split(' ')
if redir[1] == '301':
try:
print 'rewrite ^%s$ %s permanent;' % ( redir[2], replacer(redir[3]))
except:
d =0
if re.search("RewriteRule", linia):
redir = linia.split(' ')
if re.search("\^", redir[1]):
print 'rewrite ^/%s %s last;' % ( redir[1].split('^')[1], replacer(redir[2]))
f.close()
except:
print 'Error with %s' % sys.argv[1]

Z przyczyn obiektywnych lub też nie – po prawie rocznym korzystaniu z usług, zmuszony zostałem do zmienienia dotychczasowego serwera dedykowanego z webtropii na ovh. Plusem tych zmian, dość znaczącym zresztą, jest kontakt z serwisem – w wypadku ovh – całkowicie bezproblemowy i szybki, stojący w opozycji do lakonicznych tłumaczeń łamaną angielszczyzną pracowników supportu z niemiec. Dodatkowym plusem jest naprawdę przejrzysty panel ( wielojęzyczny ), w którym właściwie wszystkie możliwe operacje związane z wykupionym serwerem da się załatwić „od ręki”. Uwagę moją przykuło dodatkowe miejsce na backup na serwerze ftp – równe powierzchni dysku. Z uwagi na to że jestem strasznie leniwy a backupów nie chciało mi się ( i pewnie nie będzie chciało jeszcze przez długi czas ) regularnie samodzielnie wykonywać, „na szybko” popełniłem poniższy skrypt – który ( mam nadzieję ) przyda się nie tylko użytkownikom ovh. Prawa autorskie na licencji RPL – czyli Religion Public License ( Bierzcie i jedzcie z tego wszyscy ).
#!/usr/bin/python
from ftplib import FTP
from time import strftime
import MySQLdb, os, sys, string, commands
### CONFIG
dbrootpasswd="haslorootamysql"
ftphostname ="hostftp"
ftpuserlogin="loginuzytkownikaftp"
ftpuserpass ="haslouzytkownikaftp"
maindirect ="/sciezka/do/katalogu/ze/skryptem"
keeps ="11" # liczba dni backupu które należy zachować na serwerze.
def WriteLog(backupDate):
logw = open("ftp-backup.log", "a")
logw.write(backupDate +".tar\n")
commands.getstatusoutput("mkdir "+backupDate)
logw.close()
def MySQLBackup(backupDate):
print "Getting MySQL backup.."
commands.getstatusoutput("mysqldump -u root -p"+dbrootpasswd+" --all-databases > "+backupDate+"/"+backupDate+".db")
print "Database backup complete."
def HostingBackup(backupDate):
print "Packing up hosting directory."
commands.getstatusoutput("tar -cf "+backupDate+"/home-"+backupDate+".tar /home/hosting")
print "Hosting directory packed."
def FtpSendThatShit(backupDate):
print "Sending everything to backup server."
ftp = FTP(ftphostname,ftpuserlogin,ftpuserpass)
ftp.storbinary("STOR "+backupDate+".tar", open(backupDate+".tar", "rb"), 1024)
ftp.quit()
print "Everything ok. Quitting."
def FtpCheckOld(oldDate):
print "Cleaning old stufffffff pufff.."
ftp = FTP(ftphostname,ftpuserlogin,ftpuserpass)
ftp.delete(backupDate+".tar")
ftp.quit()
print "Puffff....."
def CleanLocal(backupDate):
print "Local filesystem cleaned."
commands.getstatusoutput("rm -fr "+backupDate+"*")
os.chdir(maindirect)
try:
log = open("ftp-backup.log", "r")
logList = log.readlines()
log.close()
backupDate = strftime("%Y-%m-%d")
print "Backup: "+backupDate
try:
logDate = logList[len(logList)-1].split('\n')
oldDate = logList[len(logList)-11].split('\n')
if logDate[0] == backupDate +".tar":
print "Backup for today was created."
exit(-1)
else:
WriteLog(backupDate)
MySQLBackup(backupDate)
HostingBackup(backupDate)
except:
WriteLog(backupDate)
MySQLBackup(backupDate)
HostingBackup(backupDate)
print "And now.. packing up everything.."
commands.getstatusoutput("tar -cf "+backupDate+".tar "+backupDate)
try:
FtpSendThatShit(backupDate)
except:
print "Something is fucked up."
try:
FtpCheckOld(oldDate)
except:
print "Nothing to clean.."
CleanLocal(backupDate)
except:
commands.getstatusoutput("touch ftp-backup.log")
commands.getstatusoutput("echo \"error\" > ftp-backup.log")
print "Small error, try again."
exit(-1)
